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 :

[Geometrie] Atan2 et ses limites


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 129
    Par défaut [Geometrie] Atan2 et ses limites
    Bonjour,
    Je me trouve face a un probleme qui je suis certain a deja ete resolu de nombreuses fois.. mais moi je bloque et je n'ai pas non plus trouve de solution sur le net. voici mon problem :
    J'ai des points qui appartiennent a un polygon. Ces points ont des coordonnees qui peuvent etre positives comme negatives. Et j'ai un point situe n'importe ou dans l'espace 2D a l'exterieur du polygon.
    J'ai donc utiliser la fonction atan2 pour trouver mes angles. Je l'utilise comme indiquee dans l'aide :
    Soit deux point A(xa,ya) et B(xb,yb) si je veux obtenir l'angle je fais :
    atan2(yb-ya,xb-xa) ... ici premier probleme :
    Prenons les points A(1,1), C(3,1), M(1,0) et enfin O(0,0)

    si l'on calcul atan2 de la facon suivante :

    atan2(O(2)-A(2),O(1)-A(1))*180/pi = -135

    atan2(O(2)-B(2),O(1)-B(1))*180/pi = -135 (normal)

    atan2(O(2)-C(2),O(1)-C(1))*180/pi = -161.5651 (normal)

    atan2(O(2)-M(2),O(1)-M(1))*180/pi = 180 (comprends pas)

    Et puis je me suis retrouver face au fait que atan2 ne calcul pas les angles au dessus de 180 degree, donc comment faire ?
    J'ai aussi tente l'utilisation du produit scalaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    double calcAngle(double p1_x, double p1_y, double p2_x, double p2_y)
    {
    double a_x = p2_x - p1_x;
    double a_y = p2_y - p1_y;
     
    double b_x = 1.0;
    double b_y = 0.0;
     
    return acos((a_x*b_x+a_y*b_y)/sqrt(a_x*a_x+a_y*a_y));
    }
    Mais meme probleme...

    Une idee ? Merci d'avance ! Je precise que je calcule les angles car je souhaite classer les points suivant cet angle.

    P.S : j'ai poste ici parce que je ne voyais pas ou je pouvais poser une question disons plus general, et egalement parce que je code en C++ ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    atan2(O(2)-M(2),O(1)-M(1))*180/pi = 180 (comprends pas)
    Qu'est-ce qui te gêne ici ?

    Et puis je me suis retrouver face au fait que atan2 ne calcul pas les angles au dessus de 180 degree, donc comment faire ?
    atan2 retourne un angle entre -pi et +pi, ce qui fait un tour complet de cadrant, difficile de faire plus.

  3. #3
    Membre éclairé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Par défaut
    Bonjour,

    pour calculer un angle par rapport à l'origine, ce ne serait pas plutôt :

    atan2(M(2)-O(2),M(1)-O(1))*180/pi = 0 //Resultat attendu ?

    avec atan2, on a (testé) :

    atan2(0.0,-1.0) = PI

    atan2(0.0,1.0) = 0

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 129
    Par défaut arf le boulet
    Je crois que j'etais tout simplement tres fatigue
    Il suffisait que j'ajoute +2pi pour avoir des angles tous dans le meme sens. Je sais pas si je suis tres clair mais si un modo passe par la, il peut supprimer ce topic vraiment inutile... (je deviens un peu fou avec mon code)
    Desole pour le derangement

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

Discussions similaires

  1. QTextEdit et ses limites
    Par nOwXO dans le forum PyQt
    Réponses: 7
    Dernier message: 26/11/2013, 21h39
  2. XenDesktop, ses atouts et ses limites
    Par doumlee dans le forum Virtualisation
    Réponses: 1
    Dernier message: 09/11/2011, 20h55
  3. ERP ou CRM configurable et ses limites
    Par benben02 dans le forum Forum général ERP
    Réponses: 1
    Dernier message: 07/12/2009, 09h31
  4. Réponses: 2
    Dernier message: 27/05/2008, 12h07
  5. [MOSS2007] Multilinguisme standard et ses limites
    Par enimren dans le forum SharePoint
    Réponses: 0
    Dernier message: 30/01/2008, 16h46

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