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
Libérer: 2025-01-14 17:47:45
original
367 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal