Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bilakah Saya Harus Menggunakan atan() vs. atan2() dalam C ?

Bilakah Saya Harus Menggunakan atan() vs. atan2() dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-11-17 00:00:03263semak imbas

When Should I Use atan() vs. atan2() in C  ?

Perbezaan Antara atan dan atan2 dalam C

Dalam matematik, tangen bagi sudut α ditakrifkan sebagai nisbah sinusnya kepada kosinus:

tan(α) = sin(α) / cos(α)

Walau bagaimanapun, formula ini tidak dapat membezakan antara sudut dalam sukuan yang berbeza. Untuk menyelesaikan kekaburan ini, C menyediakan dua fungsi: atan dan atan2.

atan: Pengiraan Sudut Ambiguous

Fungsi atan() mengembalikan sudut antara -π/2 dan π/2, tanpa mengira sukuan dari mana nilai tangen asal diperoleh. Ini bermakna atan() hanya boleh mewakili sudut dengan tepat dalam sukuan pertama dan keempat (di mana tangennya positif).

atan2: Penentuan Sudut Tepat

Berbeza dengan atan (), fungsi atan2() mengambil dua hujah: y dan x. Ini mewakili komponen sinus dan kosinus bagi sudut, masing-masing. atan2() menggunakan nilai ini untuk mengira sudut, menyelesaikan keempat-empat kuadran dengan menambah π pada hasil atan() apabila kosinus negatif.

Perwakilan Vektor

Fungsi atan2(y, x) amat berguna untuk mewakili vektor. Argumen y dan x mewakili unjuran vektor dengan panjang v dan sudut α pada paksi-y dan x, masing-masing:

y = v * sin(α)
x = v * cos(α)

Oleh itu, hubungan antara nilai ini ialah:

y/x = tan(α)

Kesimpulan

Fungsi atan() sesuai untuk situasi di mana hanya sudut dari sukuan pertama atau keempat yang relevan. Walau bagaimanapun, apabila penentuan sudut yang tepat adalah penting, fungsi atan2() harus diutamakan. Ia menyediakan julat penuh sudut dan boleh menyelesaikan sudut yang betul walaupun nilai input datang daripada kuadran yang berbeza.

Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan atan() vs. atan2() dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn