Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengira Sudut Antara Dua Titik dan Paksi Mendatar?

Bagaimana Mengira Sudut Antara Dua Titik dan Paksi Mendatar?

Barbara Streisand
Lepaskan: 2025-01-14 17:47:45
asal
317 orang telah melayarinya

How to Calculate the Angle Between Two Points and the Horizontal Axis?

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>
Salin selepas log masuk

Seterusnya, kita boleh mengira sudut menggunakan fungsi arctangent (arktan) dan menukar hasil daripada radian kepada darjah:

<code>angleInDegrees = arctan(deltaY / deltaX) * 180 / PI</code>
Salin selepas log masuk

Sebagai alternatif, jika bahasa pengaturcaraan anda menyediakan fungsi atan2, gunakannya sebagai keutamaan untuk menangani masalah kuadran:

<code>angleInDegrees = atan2(deltaY, deltaX) * 180 / PI</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan