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

Développement 2D, 3D et Jeux Discussion :

Changement de repère: 3D vers 2D et inversement


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut Changement de repère: 3D vers 2D et inversement
    Bonjour tout le monde,

    Je souhaiterais exprimer les coordonnées de mes points 3D (se trouvant sur un même plan) en coordonnées de point 2D (de ce même plan).

    Pour le moment, je multiplie les coordonnées du point 3D par une matrice de transformation (correspondant à deux vecteurs orthogonales (v1 et v2) et un vecteur normal du plan (v3) ).

    Je pense que je construis mal ma matrice...

    Voici comment je m'y prends:
    - Pour v1: je prends deux points du plan (p1, p2)
    - Pour v3: je prends le vecteur normal
    - Pour v2: je fais le produit vectoriel entre v1 et v3
    - Je normalise v1, v2 et v3
    - Je crée ma matrice M(v1, v2, v3)

    Malheureusement, j'obtiens des résultats étranges: par exemple quand je convertie les coordonnées du point p1 dans le nouveau repère, je n'obtiens pas les coordonnées (0,0) (celle que je souhaiterais...).

    Est-ce que quelqu'un peut m'expliquer ce que je fait de mal?

    Merci

  2. #2
    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 darkman19320 Voir le message
    Est-ce que quelqu'un peut m'expliquer ce que je fait de mal?
    Le fait d'utiliser la matrice de transformation ne fait qu'appliquer une rotation.
    En gros, tu transformes ton repère 3D pour l'aligner sur le repère 2D. Sauf qu'à aucun moment tu ne lui dit de mettre l'origine que tu as pris pour le repère 2D à (0,0). Du coup, tu appliques aussi ta rotation à ton origine!

    Ce qu'il te manque, c'est la translation pour positionner le centre de la rotation à l'origine de ton repère 2D. Tu calcules ton vecteur translation OP1, et tu le soustrais de tes coordonnées avant de multiplier par la matrice de rotation. Et ça devrait aller mieux...

    Par contre je ne me souviens jamais si il faut utiliser la matrice, ou l'inverse de la matrice...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Super, merci pour ta réponse.

    Je teste ça tout de suite et vous tiens au courant pour savoir si c'est l'inverse de la matrice ou non.

    Edit: Juste par curiosité, on ne peut pas utiliser les coordonnées homogènes histoire ne faire qu'un seul produit matriciel?

  4. #4
    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 darkman19320 Voir le message
    Edit: Juste par curiosité, on ne peut pas utiliser les coordonnées homogènes histoire ne faire qu'un seul produit matriciel?
    Si si, tu peux.
    C'est d'ailleurs ce qui est utilisé en OpenGL.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Bonjour,

    Alors je reviens vers vous pour vous dire que j'ai finalement réussi a combiner la rotation et la translation (mon erreur venez du point d'origine...)

    Je résous la discussion.

    Encore merci pour tout.

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

Discussions similaires

  1. Changement de repère
    Par Bloodista dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/04/2007, 23h23
  2. fichier texte dos vers linux et inversement
    Par mencaglia dans le forum C++
    Réponses: 4
    Dernier message: 23/09/2006, 11h59
  3. code c pour sockets (udp vers tcp et inversement)
    Par HiT dans le forum Développement
    Réponses: 11
    Dernier message: 19/11/2005, 18h03
  4. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

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