Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengira Sudut Antara Garis dan Paksi Mendatar?

Bagaimanakah Saya Boleh Mengira Sudut Antara Garis dan Paksi Mendatar?

DDD
DDDasal
2025-01-14 17:42:44473semak imbas

How Can I Calculate the Angle Between a Line and the Horizontal Axis?

Kira sudut antara garis lurus dan paksi mengufuk

Dalam pengaturcaraan, selalunya perlu untuk menentukan sudut antara garis lurus dan paksi mendatar. Pertimbangkan rajah berikut, di mana (P1x,P1y) dan (P2x,P2y) mentakrifkan dalam kuadran positif Segmen baris terarah. Matlamat kami adalah untuk mencari sudut θ antara garis ini dan paksi mendatar.

Langkah untuk mengira sudut yang disertakan:

1. Kira komponen vektor: Cari perbezaan antara titik akhir:

  • deltaY = P2y - P1y
  • deltaX = P2x - P1x

2. Gunakan arctan2 untuk mengira sudut (disyorkan):

  • angleInDegrees = atan2(deltaY, deltaX) * 180 / PI

Kaedah ini menggunakan fungsi atan2, yang menganggap deltaY dan deltaX untuk menentukan sudut yang betul dalam semua kuadran.

3. Kaedah alternatif:

  • Anggap vektor (deltaX, deltaY) sebagai vektor unit dengan membahagikannya dengan panjangnya.
  • deltaX menjadi kosinus sudut, dan deltaY menjadi sinus sudut.
  • Jika panjang vektor ialah 0, tiada sudut, jadi sinus dan kosinus tidak ditentukan.

Nota lain:

  • Tanda deltaX dan deltaY menentukan kuadran sudut.
  • atan2(deltaY, deltaX) mengembalikan sudut dalam radian. Darab dengan 180 / PI untuk menukarnya kepada darjah.

Perlaksanaan contoh Python:

<code class="language-python">from math import atan2, pi

def get_angle_between_points(x1, y1, x2, y2):
    deltaY = y2 - y1
    deltaX = x2 - x1
    angle_in_radians = atan2(deltaY, deltaX)
    angle_in_degrees = angle_in_radians * 180 / pi
    return angle_in_degrees</code>

Fungsi ini menerima empat koordinat dan mengembalikan sudut dalam darjah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Sudut Antara Garis dan Paksi Mendatar?. 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