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

OpenGL Discussion :

[Algo] Point appartenant au triangle


Sujet :

OpenGL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut [Algo] Point appartenant au triangle
    Bonjour

    Je fais une petite appli GL, mais ma question n'est pas vraiment sur GL..

    En fait j'ai une facette représentée par 3 points et un point appartenant au olan de la facette... Comment savoir si le point est à l'interieur de la facette ???

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Si je me souviens bien : tu as 3 points ABC et un point X dans le même plan. Je crois que X est à l'intérieur du triangle ABC si :

    AX.AB > 0 et
    BX.BC > 0 et
    CX.CA > 0

    Essaye de voir si ça marche , sinon je reverrais ma formule

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    ouép ca a l'air de marcher thx

  4. #4
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    c bizare quand meme
    Mon truc me donne des résultats un peu cheloud avec cette forumle
    Es tu bien sur que c'est la bonne??
    C peut être moi mais je voudrais être sur avant

  5. #5
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    ba non quand même pas, ca doit être autre chose

    En fait j'ai deux plan (leurs équations)

    et une ribembelle de facettes.... Je determine alors pour chaque facette l'équation de plan qui lui correspond...

    Avec ces 3 plans, je determine alors un point d'intersection, et je voudrais savoir si le pt est dans le triangle...

    J'ai des résultat légèrement abérant, mais apparament le calcul d'intersection semble correct.....donc je ne sais pas trop d'où ca vient

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    J'ai peut être repondu un peu vite puisque je viens de trouver un cas ou ma formule ne marche pas, dsl. J'y reflechis

  7. #7
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    ok ca marche moi j'ai trouvé ca
    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
     
    inline bool VertexInTriangle(vec3 vtxPoint, vec3 vtx0, vec3 vtx1, vec3 vtx2)
    {
        double dAngle;
     
        vec3 vec0 = Normalize( vtxPoint - vtx0 );
        vec3 vec1 = Normalize( vtxPoint - vtx1 );
        vec3 vec2 = Normalize( vtxPoint - vtx2 );
     
        dAngle =
            acos( DotProduct(vec0,vec1) ) + 
            acos( DotProduct(vec1,vec2) ) + 
            acos( DotProduct(vec2,vec0) ) ;
     
        if( fabs( dAngle - 2 * PI ) < 0.001 )
            return true;
        else
            return false;
    }
    c clair c pas bête

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    C'est pas bête mais je pense que c'est pas bon, moi je ferais :

    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
     
    inline bool VertexInTriangle(vec3 vtxPoint, vec3 vtx0, vec3 vtx1, vec3 vtx2) 
    { 
        double dAngle; 
     
        vec3 vec0 = Normalize( vtxPoint - vtx0 ); 
        vec3 vec1 = Normalize( vtxPoint - vtx1 ); 
        vec3 vec2 = Normalize( vtxPoint - vtx2 ); 
     
        if( acos( DotProduct(vec0,vec1) ) > PI ||
            acos( DotProduct(vec1,vec2) ) > PI ||
            acos( DotProduct(vec2,vec0) ) > PI) 
            return false; 
        else 
            return true; 
    }
    Mais je me trompe peut-être, tiens moi au courant

  9. #9
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    ca me soul j'ai des putain de DOMAIN ERROR avec le acos mais le calcul du produit scalaire est bon (bien entre -1 et 1)

  10. #10
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    oh c bon tout marche
    thanks sphax pour les réponses
    note : avec le truc que j'ai trouvé ca marche mais pas avec ta formule
    By

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 75
    Points
    75
    Par défaut
    Regarde ici
    http://www.developpez.net/forums/vie...light=triangle

    Notamment le dernier post de Delphi-Fan

  12. #12
    xg
    xg est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Avec les arcos c'est trop lourd et laid.

    Le mieux, c'est avec les barycentres : c'est rapide clair et net

  13. #13
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    et comment ??
    Maintenant j'ai quelques chose qui fonctionne et la vitesse de calcul me convient largement..Mais bon si tu as mieux je suis preneur

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

Discussions similaires

  1. Un point appartenant a un cylindre
    Par bloblo dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/11/2009, 09h38
  2. point appartenant à un segment
    Par slim_java dans le forum Mathématiques
    Réponses: 6
    Dernier message: 12/08/2009, 15h15
  3. générer des points appartenant à l'intersection d'une sphère et d'un cône
    Par christophe_halgand dans le forum Mathématiques
    Réponses: 3
    Dernier message: 25/06/2009, 18h07
  4. Point dans un triangle ou quadrangle ?
    Par sunshine33 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 13/07/2006, 14h13
  5. [Algo] Point à l'intérieur d'un polygone ?
    Par kebby dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/05/2003, 13h22

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