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

Mathématiques Discussion :

Calcul de l'angle d'un vecteur


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut Calcul de l'angle d'un vecteur
    Bonjour, j'ai un problème d'angles, et comme je suis un peu rouillé, j'espère que vous pourrez m'aider :

    J'ai deux points quelconques A et B dans un repère xOy classique. Je veux calculer l'angle du vecteur AB par rapport au vecteur -Oy (le vecteur "descendant").
    Je connais juste les positions des points A et B, et je travaille en angles et pas en radian.

    Merci d'avance !!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    Avec les coordonnées de A et B tu peux calculer facilement la longeur AB sur l'axe Ox puis AB sur l'axe Oy
    Ensuite les formules de calcul d'angle (cos, sin et tan) dans un triangle rectangle sont tes amies

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par zarbiman Voir le message
    comme je suis un peu rouillé
    ...
    je travaille en angles et pas en radian
    Ben oui, tu es un peu rouillé. Sache que le radian est une unité d'angle au même titre que le degré ou le grade. Donc je suppose que tu voulais dire :
    "je travaille en degrés et non en radians"

    Cela dit, toutes les fonctions donnant des angles les donnent en radians. Pour convertir les résultats en degrés, tu n'as qu'à multiplier par 180/pi.

    L'angle v de AB avec Ox est tel que : tan(v)=(yb-ya)/(xb-xa) si xb-xa est différent de zéro. Si xb-xa=0 tu es obligé de faire un traitement particulier. Mais tu peux y échapper en utilisant la fonction atan2 ci-dessous, si elle existe. Pour obtenir l'angle v tu appliques une fonction réciproque, qui s'appelle arctangente, atan dans les langages de programmation en général.

    Donc tu peux obtenir v par : v=atan((yb-ya)/(xb-xa)). Mais la seule donnée de la tangente ne définit l'angle v qu'à pi près (à 180° près en degrés). Si (xb-xa) < 0 tu dois corriger en ajoutant pi (180°) au résultat. Dans certains langages, tu peux obtenir directement v en utilisant une autre fonction qui s'appelle atan2 le plus souvent : atan2((yb-ya),((xb-xa)). Cette correction est alors intégrée et tu n'auras plus rien à corriger, même dans le cas spécial où xb-xa=0.

    Enfin, l'angle qui t'intéresse est w=(-Oy,AB) qui est égal à (Ox,AB)+pi/2 (+90° en degrés).

    En résumé :

    Calcul de pi : pi = 4 * atan(1)

    et w= [ atan2((yb-ya),(xb-xa))+pi/2 ] * (180/pi)

    W sera en degrés l'angle que tu cherches (à 360° près)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    Ok j'ai utilisé la méthode simple du sinus et j'ai réussi à récupérer l'angle. C'était pas très dur donc j'étais bien rouillé !

    Merci !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Calcul d'angle
    Bonjour, voila je suis super nul et j'ai un exercice que je n'arrive vraiment pas a résoudre. Alors si quelqu'un pouvait me dire comment m'y prendre sa serai super et éviterai la catastrophe ...

    Voila l'énoncé :

    La direction de tir d'un projectile est donnée par le vecteur
    A= 3ex - 6ey +2ez ( il y a des flèches sur chaques données de la formule)
    Déterminer les angles que forme cette direction avec les axes de coordonnées Ox, Oy et Oz .


    Voila !!! En attendant vos réponses !!!!
    Merciiii

  6. #6
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut

    Citation Envoyé par pedro24 Voir le message
    Alors si quelqu'un pouvait me dire comment m'y prendre sa serai super et éviterai la catastrophe ...

    la réponse est au-dessus... mais as-tu pris la peine de la lire au moins?

    Etant donné que je pense que personne d'un peu sensé ne te donnera la réponse directement, je te conseille de préciser ce sur quoi tu bloques dans cet exercice...

    Petite précision... les "flèches sur chaques données de la formule", ça s'appelle des vecteurs...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    J'aime les vieux post !
    La reponse de ceugniet est très intéressante mais il me semble que la formule n'est pas correct :
    w= [ atan2((yb-ya),(xb-xa))+pi/2 ] * (180/pi)
    Voila ma proposition suppression de pi/2 pour pi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w= ( atan2((yb-ya),(xb-xa))+pi ) * 180 / pi
    Testé en C#
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  8. #8
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par themadmax Voir le message
    J'aime les vieux post !
    La reponse de ceugniet est très intéressante mais il me semble que la formule n'est pas correct :
    Si si, elle l'est.
    atan2 donne l'angle par rapport à Ox, donc pour avoir l'angle par rapport à -Oy, tu rajoutes pi/2... et non pi.

    [pas regarder ici]

    Testé en Java.
    On lance un troll java ça fonctionne mieux que C#...?

    [/pas regarder ici]
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par plegat Voir le message
    Si si, elle l'est.
    atan2 donne l'angle par rapport à Ox, donc pour avoir l'angle par rapport à -Oy, tu rajoutes pi/2... et non pi.
    Je me plante où alors? Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    using System;
    namespace ConsoleApplication
    {
        class Program
        {
            static void print(double x, double y)
            {
                double a = (Math.Atan2(y, x)+Math.PI/2.0) * 180.0 / Math.PI;
                Console.WriteLine(String.Format("{0},{1} : {2}", x, y, a));
            }
            static void Main(string[] args)
            {
                print(0.0, 0.0);
                print(1.0, 0.0);
                print(0.0, 1.0);
                print(1.0, 1.0);
     
                print(-1.0, 0.0);
                print(0.0, -1.0);
                print(-1.0, -1.0);
     
            }
        }
    }
    et en cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #define _USE_MATH_DEFINES
    #include <math.h>
    #include <iostream>
     
    static void print(double x, double y)
    {
        double a = (atan2(y, x)+M_PI/2.0) * 180.0 / M_PI;
    	std::cout << x << "," << y << " : " << a << std::endl ;
    }
     
    int main()
    {
        print(0.0, 0.0);
        print(1.0, 0.0);
        print(0.0, 1.0);
        print(1.0, 1.0);
     
        print(-1.0, 0.0);
        print(0.0, -1.0);
        print(-1.0, -1.0);
     
    }
    Sortie (C++ VisualStudio):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    0,0 : 90
    1,0 : 90
    0,1 : 180
    1,1 : 135
    -1,0 : 270
    0,-1 : -3.50979e-015
    -1,-1 : -45
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  10. #10
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par themadmax Voir le message
    Je me plante où alors? Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                double a = (Math.Atan2(y, x)+Math.PI/2.0) * 180.0 / Math.PI;
    Ben nulle part...
    Tu mets Pi/2 dans ton code, et tu as les bonnes valeurs en sortie... y'a pas de bug...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  11. #11
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Oki je pensai que l'on voulais exclusivement des valeurs angles en dégrée positifs.
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  12. #12
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par themadmax Voir le message
    Oki je pensai que l'on voulais exclusivement des valeurs angles en dégrée positifs.
    Ce n'est pas spécifié en tant que tel, mais si c'est nécessaire, faire un +360 sur le résultat (en degrés), suivi d'un modulo 360.
    Ca ramènera le résultat final entre 0 et 360°.

    Le Pi/2 de la formule est uniquement là pour donner l'angle par rapport à -Oy, pas pour ramener à une valeur d'angle positive.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. Calculer le signe de l'angle entre 2 vecteurs. (en 3D)
    Par Invité dans le forum Mathématiques
    Réponses: 5
    Dernier message: 05/07/2014, 11h50
  2. [GLSL] Calculer un angle entre deux vecteurs.
    Par who_knows dans le forum OpenGL
    Réponses: 5
    Dernier message: 05/05/2010, 17h40
  3. Calcul d'angle entre deux vecteurs
    Par feynman dans le forum Fortran
    Réponses: 8
    Dernier message: 22/09/2007, 13h59
  4. 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, 19h29
  5. Calcul d'un angle
    Par adrien954 dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/09/2006, 15h08

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