Maison >développement back-end >C++ >Comment puis-je calculer l'angle entre une ligne et l'axe horizontal ?

Comment puis-je calculer l'angle entre une ligne et l'axe horizontal ?

DDD
DDDoriginal
2025-01-14 17:42:44473parcourir

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

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

En programmation, il est souvent nécessaire de déterminer l'angle entre une droite et l'axe horizontal. Considérons le diagramme suivant, où (P1x,P1y) et (P2x,P2y) définissent dans le quadrant positif Un segment de ligne dirigé. Notre objectif est de trouver l'angle θ entre cette ligne et l'axe horizontal.

Étapes pour calculer l'angle inclus :

1. Calculer les composantes vectorielles : Trouvez la différence entre les points de terminaison :

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

2. Utilisez arctan2 pour calculer l'angle (recommandé) :

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

Cette méthode utilise la fonction atan2, qui prend en compte deltaY et deltaX pour déterminer les angles corrects dans tous les quadrants.

3. Méthode alternative :

  • Traitez le vecteur (deltaX, deltaY) comme un vecteur unitaire en le divisant par sa longueur.
  • deltaX devient le cosinus de l'angle, et deltaY devient le sinus de l'angle.
  • Si la longueur du vecteur est 0, il n'y a pas d'angle, donc le sinus et le cosinus ne sont pas définis.

Autres notes :

  • Le signe de deltaX et deltaY détermine le quadrant de l'angle.
  • atan2(deltaY, deltaX) renvoie l'angle en radians. Multipliez par 180 / PI pour le convertir en degrés.

Exemple d'implémentation 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>

Cette fonction accepte quatre coordonnées et renvoie l'angle en degrés.

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