Heim > Backend-Entwicklung > C++ > Wie berechnet man den Winkel zwischen zwei Punkten und der horizontalen Achse?

Wie berechnet man den Winkel zwischen zwei Punkten und der horizontalen Achse?

Barbara Streisand
Freigeben: 2025-01-14 17:47:45
Original
318 Leute haben es durchsucht

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

Berechnen Sie den Winkel zwischen der Geraden und der horizontalen Achse

Die Bestimmung des Winkels zwischen einer geraden Linie und einer horizontalen Achse ist in verschiedenen Programmierszenarien ein häufiger Bedarf. Bei zwei Punkten (P1x,P1y) und (P2x,P2y) besteht das Ziel darin, diesen Winkel zu berechnen .

Zuerst müssen wir den inkrementellen Wert (Differenz) zwischen dem Endpunkt und dem Startpunkt bestimmen:

<code>deltaY = P2_y - P1_y
deltaX = P2_x - P1_x</code>
Nach dem Login kopieren

Als nächstes können wir den Winkel mithilfe der Arcustangens-Funktion (Arctan) berechnen und das Ergebnis vom Bogenmaß in Grad umrechnen:

<code>angleInDegrees = arctan(deltaY / deltaX) * 180 / PI</code>
Nach dem Login kopieren

Wenn Ihre Programmiersprache alternativ die atan2-Funktion bereitstellt, verwenden Sie diese anstelle der Behandlung von Quadrantenproblemen:

<code>angleInDegrees = atan2(deltaY, deltaX) * 180 / PI</code>
Nach dem Login kopieren

Abhängig von den spezifischen Anforderungen müssen Sie möglicherweise Anpassungen vornehmen, um den Quadranten zu berücksichtigen, in dem sich der Winkel befindet. Durch Berücksichtigung des Vorzeichens von deltaX und deltaY können Sie den passenden Quadranten bestimmen und den Winkel entsprechend anpassen.

Python-Beispielcode

Der folgende Python-Code demonstriert die Implementierung der oben genannten Methode:

<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>
Nach dem Login kopieren

Dieser Code enthält zusätzliche Prüfungen, um die Genauigkeit bei der Winkelberechnung sicherzustellen. Wir haben die Funktion degrees verwendet, um Bogenmaß direkt in Grad umzuwandeln und so den Code zu vereinfachen. Und die letzte Behauptung wird genauer beurteilt, um Fehler beim Gleitkommavergleich zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Winkel zwischen zwei Punkten und der horizontalen Achse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage