Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan utama antara fungsi atan dan atan2 dalam C?
Perbezaan Antara atan dan atan2 dalam C
Dalam trigonometri, fungsi arctangent (atan) mengira sudut yang tangennya ialah nilai yang diberikan . Walau bagaimanapun, atan mempunyai had kerana ia hanya mengembalikan sudut dari kuadran pertama atau keempat (-π/2 <= atan() <= π/2), tanpa mengira input.
Untuk mengatasi had ini, C menyediakan fungsi atan2. Tidak seperti atan, yang hanya mengambil satu hujah (tangen), atan2 mengambil dua hujah: sinus dan kosinus sudut. Ini membolehkan atan2 menentukan sukuan sudut dan mengembalikan sudut yang betul dalam julat -π <= atan2() <= π.
Resolusi Kuadran
The perbezaan utama antara atan dan atan2 adalah bagaimana mereka menyelesaikan kuadran sudut. atan menganggap input datang dari kuadran pertama atau keempat, manakala atan2 mempertimbangkan tanda kedua-dua sinus dan kosinus untuk menentukan kuadran yang betul.
Quadrant | atan() | atan2(sin(α), cos(α)) |
---|---|---|
I | -π/2 <= atan() <= π/2 | 0 <= atan2() <= π/2 |
II | -π/2 <= atan() <= π/2 | -π/2 <= atan2() <= 0 |
III | -π/2 <= atan() <= π/2 | π/2 <= atan2() <= π |
IV | -π/2 <= atan() <= π/2 | 0 <= atan2() <= π/2 |
Sintaksis
double atan(double radians); double atan2(double y, double x);
Contoh
Pertimbangkan sudut α dengan tangen 1. Dengan menggunakan atan() sahaja, kita tidak boleh menentukan sama ada α berada dalam sukuan pertama atau ketiga. Walau bagaimanapun, menggunakan atan2(), kita boleh mendapatkan semula sudut yang betul:
double angle = atan2(sin(alpha), cos(alpha));
Nota Tambahan
atan2() amat berguna dalam pengiraan vektor, di mana ia boleh digunakan untuk mencari sudut vektor dalam Cartesan koordinat.
Kesimpulan
Walaupun atan mencukupi untuk aplikasi tertentu yang hanya memerlukan sudut dalam sukuan pertama atau keempat, atan2 menyediakan penyelesaian yang lebih komprehensif dengan menyelesaikan sukuan sudut dan mengembalikan sudut yang betul dalam keseluruhan julat [-π, π].
Atas ialah kandungan terperinci Apakah perbezaan utama antara fungsi atan dan atan2 dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!