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

Algorithmes et structures de données Discussion :

Calculer la position d'un point sur un polygone ?


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut Calculer la position d'un point sur un polygone ?
    Bonjour,
    désolé pour le titre pas très explicite, voila j'ai un polygone (3 points A B et C dans l'espace 3d) et un point (P) sur ce polygone. Donc quatre points au total.
    Le polygone est texturé et possède donc pour chaque point 2 coordonnées de texture (u v).
    Je cherche les coordonnées de texture du point P.

    Ce que je me suis dit c'est que la position de P correspond à une part de A une part de B et une part de C (Px=k1*Ax+k2*Bx+k3*Cx et Py=k1*Ay...) et que donc ce sera pareil pour les coordonnées de texture et qu'en calculant k1, k2 et k3 je pourrez simplement appliquer l'equation Pu=k1*Au+k2*Bu+k3*Cu pour obtenir mes coordonnées de texture.

    Le problème que j'ai c'est pour résoudre l'équation, je ne suis pas très fort, c'est là que j'attends vos lumières.

    Merci

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Salut,

    Citation Envoyé par supergrey Voir le message
    Le problème que j'ai c'est pour résoudre l'équation, je ne suis pas très fort, c'est là que j'attends vos lumières.
    Résolution d'un système de trois équations linéaires à 3 inconnues:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    | Ax Bx Cx | |k1| |Px|
    | Ay By Cy |*|k2|=|Py|
    | Az Bz Cz | |k3| |Pz|
    Librairie déjà existante, ou pivot de gauss, ou inversion de matrice, et tu as tes 3 coefs k1, k2 et k3.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Le pivot de gauss ça me semble compliqué pour que ça s'applique à tous les cas, donc les matrices ça me tenterait bien mais est-ce que ça existe en c++ ?

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par supergrey Voir le message
    Le pivot de gauss ça me semble compliqué pour que ça s'applique à tous les cas
    Gnein?
    Compliqué? On apprend ça en seconde... il n'y a guère plus simple...
    Et si il y a un cas où ça ne s'applique pas ici, c'est que ton triangle est dégénéré .

    Citation Envoyé par supergrey Voir le message
    donc les matrices ça me tenterait bien mais est-ce que ça existe en c++ ?
    Roh je pense que oui...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Ouai bon faut pas m'en vouloir je suis sous antibiotiques
    Alors je me lance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Px=K*Ax+L*Bx+M*Cx
    Py=K*Ay+L*By+M*Cy
    Pz=K*Az+L*Bz+M*Cz
    Eliminons les K:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PxAy=KAxAy+LBxAy+MCxAy
    PyAx=KAyAx+LByAx+MCyAx     => PxAy-PyAx=L(BxAy-ByAx)+M(CxAy-CyAx)
     
    PzAx=KAzAx+LBzAx+MCzAx      => PxAz-PzAx=L(BxAz-BzAx)+M(CxAz-CzAx)
    J'ai bon ? Passons aux L:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (PxAy-PyAx)(BxAz-BzAx)=L(BxAy-ByAx)(BxAz-BzAx)+M(CxAy-CyAx)(BxAz-BzAx)
    (PxAz-PzAx)(BxAy-ByAx)=L(BxAz-BzAx)(BxAy-ByAx)+M(CxAz-CzAx)(BxAy-ByAx)
     
    (PxAy-PyAx)(BxAz-BzAx)-(PxAz-PzAx)(BxAy-ByAx)=M(CxAy-CyAx)(BxAz-BzAx)-M(CxAz-CzAx)(BxAy-ByAx)
    Donc on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    M=[(PxAy-PyAx)(BxAz-BzAx)-(PxAz-PzAx)(BxAy-ByAx)]/[(CxAy-CyAx)(BxAz-BzAx)-(CxAz-CzAx)(BxAy-ByAx)]
    Et la je fais une pause parceque je ne suis pas du tout sûr d'arriver à simplifier tout ça... si c'est juste...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Et Dieu créa les Coordonnées Barycentriques Homogènes appliquées aux polygones.

    http://www2.in.tu-clausthal.de/~horm...n.2005.BCF.pdf

    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    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 817
    Par défaut
    Citation Envoyé par supergrey Voir le message
    Et la je fais une pause parceque je ne suis pas du tout sûr d'arriver à simplifier tout ça... si c'est juste...
    Euh... oui non mais si tu essayes de trouver les formules littérales à la main, ça ne sert plus à rien de programmer!

    Programme le ton algo de pivot de gauss...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Calcul de coordonnées d'un point sur une Google map
    Par Abso34 dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2014, 14h40
  2. Calcul de distance entre deux points sur une carte ( openlayers)
    Par Atika90 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2013, 16h27
  3. Calcul de points sur un cone
    Par lenoil dans le forum Mathématiques
    Réponses: 1
    Dernier message: 21/03/2008, 15h44
  4. Calcul rayon d'une ellipse (distance centre-point sur cercle)
    Par aristeas dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/01/2007, 11h37
  5. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2003, 21h18

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