IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

calcul d'angle sens anti-horaire


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Points : 19
    Points
    19
    Par défaut calcul d'angle sens anti-horaire
    Bonjour à tous,

    Je travail avec visualC++ 2008 et les windows form.
    Je vais essayer de faire simple:
    J'ai un nombre de vecteur indeterminé ayant tous la même origine. Mon but est de parcourir chaque vecteur dans l'ordre anti-horaire, et de calculé l'angle qu'il forme avec le prochain vecteur. Cela afin de determiner l'endroit ou il y a le plus grand ecart entre 2 vecteurs.
    J'utilise le produit scalaire pour trouver l'angle entre chaque vecteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    angleABC=produit_scalaire_AB_AC/(longueur_AB*longueur_AC);
    Par exemple j'ai deux vecteur AB et AC qui forme un angle de 20degrés, AB étant avant AC dans le cicle, je voudrais que lorsque je demande l'angle de AB vers AC il me dise 20degrés et lorsque je demande l'angle AC vers AB il me dise 340degrés...
    Or le problème est qu'il me retourne toujours 20 degrés, ce qui est normal je comprend bien
    J'ai pensé detecter si l'angle est derrière et à ce moment là j'aurais fais 360 moins le résultat, mais comment savoir si l'angle est derrière?
    Donc je suis bloqué et ouvert à toutes propositions même si elle n'a rien à voir avec la mienne...

    Merci d'avance à ceux qui pourront m'aider.
    Persnip

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello

    C'est très facile : il te suffit de calculer le produit vectoriel. Comme tes vecteurs sont 2D, il suffit de calculer la composante en z du produit vectoriel (les composantes en x et y seront nulles).

    Dans la pratique, il te suffit de calculer la valeur (Bx-Ax)*(Cy-Ay) - (By-Ay)*(Cx-Ax) (facile n'est ce pas ?). Si la valeur est positive, l'angle est bien anti-horaire et dans ton exemple, tu auras 20°. Si la valeur est négative, tu soustrais à 360 pour obtenir le bon résultat . Si la valeur est égale à 0, tes vecteurs sont soit nuls, soit égaux soit opposés. Ce sont des cas faciles à traiter.

    nota bene : la formule que tu cites dans ton post ne te donne pas l'angle mais le cosinus de l'angle
    Find me on github

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Points : 19
    Points
    19
    Par défaut
    Merci jblecanard,
    Je vais tester ta méthode.
    J'etais partis sur une méthode beaucoup plus compliqué:
    je faisant une rotation de ma form afin que mon premier vecteur soit vertical et ensuite je comptais comparer la coordonnée x du deuxième par rapport au premier, si il était plus grand je faisait 360-l'angle, sinon je ne faisait rien.
    Je file essayer ça de suite!

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Points : 19
    Points
    19
    Par défaut
    jblecanard,
    Tu n'aurais pas inversé les signes?
    Car moi j'obtiens un resultat positif lorsque l'angle est dans le sens horaire et négatif lorsqu'il est dans le sens anti-horaire!
    Ou peu etre que j'ai inversé les vecteurs aussi
    Merci encore, mon problème est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul d'angle entre deux vecteurs
    Par feynman dans le forum Fortran
    Réponses: 8
    Dernier message: 22/09/2007, 14h59
  2. Calcul d'angle entre 2 vecteurs - direction
    Par lothei dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 03/09/2007, 20h29
  3. Calcul d'angles
    Par Giansolo dans le forum Octave
    Réponses: 3
    Dernier message: 27/02/2007, 20h00
  4. calcule d'angle entre 3 points d'une matrice
    Par bmw13fr dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/04/2006, 19h56
  5. calculer un angle
    Par m.nico dans le forum Langage
    Réponses: 7
    Dernier message: 05/11/2003, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo