Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengira Sudut Antara Dua Titik dan Paksi Mendatar?
Kira sudut antara garis lurus dan paksi mengufuk
Menentukan sudut antara garis lurus dan paksi mendatar adalah keperluan biasa dalam pelbagai senario pengaturcaraan. Diberi dua mata (P1x,P1y) dan (P2x,P2y), matlamatnya adalah untuk mengira sudut ini .
Pertama, kita perlu menentukan nilai tambahan (perbezaan) antara titik akhir dan titik permulaan:
<code>deltaY = P2_y - P1_y deltaX = P2_x - P1_x</code>
Seterusnya, kita boleh mengira sudut menggunakan fungsi arctangent (arktan) dan menukar hasil daripada radian kepada darjah:
<code>angleInDegrees = arctan(deltaY / deltaX) * 180 / PI</code>
Sebagai alternatif, jika bahasa pengaturcaraan anda menyediakan fungsi atan2, gunakannya sebagai keutamaan untuk menangani masalah kuadran:
<code>angleInDegrees = atan2(deltaY, deltaX) * 180 / PI</code>
Bergantung pada keperluan khusus, anda mungkin perlu melaraskan untuk mengambil kira kuadran sudut berada. Dengan mempertimbangkan tanda deltaX dan deltaY anda boleh menentukan kuadran yang sesuai dan melaraskan sudut dengan sewajarnya.
Kod contoh Python
Kod Python berikut menunjukkan pelaksanaan kaedah di atas:
<code class="language-python">from math import * def getAngleBetweenPoints(x_orig, y_orig, x_landmark, y_landmark): deltaY = y_landmark - y_orig deltaX = x_landmark - x_orig return degrees(atan2(deltaY, deltaX)) # 使用degrees函数直接转换为角度 angle = getAngleBetweenPoints(5, 2, 1, 4) assert angle >= 0, "angle must be >= 0" angle = getAngleBetweenPoints(1, 1, 2, 1) assert angle == 0, "expecting angle to be 0" angle = getAngleBetweenPoints(2, 1, 1, 1) assert abs(180 - angle) < 1e-6, "expecting angle to be 180" # 使用更精确的断言 </code>
Kod ini mengandungi semakan tambahan untuk memastikan ketepatan dalam mengira sudut. Kami menggunakan fungsi degrees
untuk menukar terus radian kepada darjah, memudahkan kod. Dan penegasan terakhir dinilai dengan lebih tepat untuk mengelakkan kesilapan dalam perbandingan titik terapung.
Atas ialah kandungan terperinci Bagaimana Mengira Sudut Antara Dua Titik dan Paksi Mendatar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!