Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Angle orienté formé par 2 vecteurs



  1. #1
    daf_64

    Red face Angle orienté formé par 2 vecteurs


    ------

    Bonjour,
    Un petit soucis de programmation, j'ai 2 vecteurs A et B définis par les coordonnées (Xa, Ya, Za) et (Xb, Yb, Zb) resp. (ils sont tous deux sur le plan z=0 donc Za=Zb=0). J'aurais besoin de l'angle orienté entre ces deux vecteurs.

    Etant sérieusement rouillé j'ai parcouru les forums et autre et suis arrivé à cette solution :
    angle = atan2(sin, cos)
    avec sin = norme(A^B)/norme(A)*norme(B)
    et cos = A.B/norme(A)*norme(B)

    Le problème est qu'en utilisant cette méthode et bien que atan2 donne un résultat dans [-PI;PI], mon angle est toujours dans [0;PI/2] puisque sin et cos sont toujours positifs!!!

    Bref quelqu'un penserait-il a un moyen d'obtenir l'angle orienté entre A et B à partir des coordonnées de A et B?

    Merci d'avance

    -----

  2. #2
    prgasp77

    Re : Angle orienté formé par 2 vecteurs

    Bonjour. L'angle entre les vecteurs et vaut
    Mais je dois te prévenir que si tu utilise les fonctions trigonométriques de la STL (math.h, math.pas, etc.) tu vas avoir des soucis (sortie dans [0;/2]). Il va faloir redéfinir sin, cos, tan, asin, acos, et atan
    Bonne chance.

  3. #3
    humanino

    Re : Angle orienté formé par 2 vecteurs

    Bonjour,
    Citation Envoyé par daf_64 Voir le message
    ... puisque sin et cos sont toujours positifs!!!
    Pourquoi est-ce que cos est toujours positif ? Si l'angle (non-oriente) est superieur a pi/2, le produit scalaire devrait etre negatif.
    "Puisque toute ces choses nous depassent, feignons de les avoir organisees"

  4. #4
    daf_64

    Thumbs up Re : Angle orienté formé par 2 vecteurs

    Citation Envoyé par prgasp77 Voir le message
    Bonjour. L'angle entre les vecteurs et vaut
    Mais je dois te prévenir que si tu utilise les fonctions trigonométriques de la STL (math.h, math.pas, etc.) tu vas avoir des soucis (sortie dans [0;/2]). Il va faloir redéfinir sin, cos, tan, asin, acos, et atan
    Bonne chance.
    Merci pour cette réponse que j'ai testée et qui a l'air de très bien fonctionner (je savais qu'il y avait une façon simple d'y arriver! ).
    Quelques précisions qui pourraient être utiles :
    • La librairie <math.h> inclue, en plus des 6 fonctions que tu cites, la fonction atan2 qui a l'avantage, par rapport à atan, de retourner une valeur dans [-;] et non [-/2;/2]. Du coup pas besoin de redéfinir quoi que ce soit!
    • Cependant la différence entre les 2 angles peut donner un résultat > ou < -, il faut donc réajuster le résultat...
    • Du coup au niveau code (C/C++) ça donne :
      Code:
      float angle = atan2(Yb, Xb) - atan2(Ya, Xa);
      while ( angle >= M_PI ) angle -= 2*M_PI;
      while ( angle <= -M_PI ) angle += 2*M_PI;
      Le while n'est pas nécessaire mais est plus général et ne coûte pas grand chose.
      Les inégalités simples ou strictes permettent d'inclure/exclure les valeurs limites.

    Citation Envoyé par humanino Voir le message
    Bonjour, Pourquoi est-ce que cos est toujours positif ? Si l'angle (non-oriente) est superieur a pi/2, le produit scalaire devrait etre negatif.
    Effectivement, seulement le sin était toujours positif puisque division entre norme et produit de normes.
    L'angle obtenu était donc dans [0;], pas forcément dans [0;/2]

Sur le même thème :

Discussions similaires

  1. Angle orienté de 2 vecteurs 3D
    Par pius1985 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 27/08/2008, 16h59
  2. angle orienté
    Par babydoll78 dans le forum Mathématiques du collège et du lycée
    Réponses: 8
    Dernier message: 02/03/2007, 23h03
  3. angle orienté
    Par jums dans le forum Mathématiques du collège et du lycée
    Réponses: 0
    Dernier message: 27/02/2007, 21h25
  4. Angles formé par deux vecteurs
    Par FiReTiTi dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 20/11/2006, 11h15
  5. Angle oriente de 2 vecteurs
    Par oli1978 dans le forum Mathématiques du supérieur
    Réponses: 18
    Dernier message: 21/01/2005, 08h17