Maison >développement back-end >C++ >Comment calculer l'angle entre deux points et l'axe horizontal ?

Comment calculer l'angle entre deux points et l'axe horizontal ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-14 17:47:45368parcourir

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

Calculer l'angle entre la droite et l'axe horizontal

Déterminer l'angle entre une ligne droite et un axe horizontal est un besoin courant dans divers scénarios de programmation. Étant donné deux points (P1x,P1y) et (P2x,P2y), le but est de calculer cet angle .

Tout d'abord, nous devons déterminer la valeur incrémentielle (différence) entre le point final et le point de départ :

<code>deltaY = P2_y - P1_y
deltaX = P2_x - P1_x</code>

Ensuite, nous pouvons calculer l'angle à l'aide de la fonction arctangente (arctan) et convertir le résultat des radians en degrés :

<code>angleInDegrees = arctan(deltaY / deltaX) * 180 / PI</code>

Alternativement, si votre langage de programmation fournit la fonction atan2, utilisez-la de préférence pour gérer les problèmes de quadrant :

<code>angleInDegrees = atan2(deltaY, deltaX) * 180 / PI</code>

En fonction des exigences spécifiques, vous devrez peut-être ajuster pour tenir compte du quadrant dans lequel se trouve l'angle. En considérant le signe de deltaX et deltaY, vous pouvez déterminer le quadrant approprié et ajuster l'angle en conséquence.

Exemple de code Python

Le code Python suivant démontre l'implémentation de la méthode ci-dessus :

<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>

Ce code contient des vérifications supplémentaires pour garantir l'exactitude du calcul des angles. Nous avons utilisé la fonction degrees pour convertir directement les radians en degrés, simplifiant ainsi le code. Et la dernière assertion est jugée avec plus de précision pour éviter les erreurs de comparaison en virgule flottante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn