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

DirectX Discussion :

Questions sur les rotations


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut Questions sur les rotations
    Bonjour,

    quelques questions :
    - comment effectuer une rotation d'un angle donné autour d'un axe défini par un point et un vecteur?
    - la fonction "Matrix.RotationAxis" semblait convenir mais ne prend que deux paramètres : un vecteur et un angle et génère une matrice de rotation, or à partir de ces deux données la rotation n'est pas totalement définie car il manque soit le centre de la rotation soit le sens de l'axe; alors que génère exactement cette fonction?

    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est bien cette fonction qu'il faut utiliser.
    Une rotation en 3D n'a pas de centre, mais bien un axe justement. Quant au sens de rotation, il est défini implicitement (je ne sais pas comment).

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Tu peux passer par une matrice de changement de repère, afin que ton centre de rotation soit le centre du nouveau repère.

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Merci de vos réponses.

    Une rotation en 3D n'a pas de centre, mais bien un axe justement
    Oui mais un axe est défini par un point et un vecteur, un vecteur seul ne définissant que le sens et la direction de l'axe mais pas sa position.

    Tu peux passer par une matrice de changement de repère, afin que ton centre de rotation soit le centre du nouveau repère.
    Ah oui, dans ce cas la position de l'axe est bien définie.

    En fait le but est de faire une fonction dessinant un cylindre à partir :
    - des coordonnées du centre d'une face,
    - un vecteur perpendiculaire à cette face,
    - son rayon,
    - sa hauteur.
    Ce principe s'appliquant aussi au carré par exemple :
    - coordonnées du centre d'une face,
    - un vecteur perpendiculaire à cette face,
    - un sommet de cette face.

    La difficulté commune étant la détermination des extrémités des solides à partir de ces données, notamment en appliquant les bonnes rotations pour déduire les autres sommets du carré à partir de celui donné.

    Quelle serait la manière la plus simple de procéder?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Je na sais pas si c'est la plus simple...

    Pour le carré (j'appelle A ton sommet, n ta normale et C le centre de ta face):
    _ tu fais la rotation de +45° et de centre O selon n de ton point A. Tu obtiens B.
    _ tu fais la rotation de -45° et de centre O selon n de ton point A. Tu obtiens C.
    _ la base (AB, AC, n) te permet ensuite de créer facilement les autres points...

    Autre méthode:
    _ tu trouve le symetrique de A par rapport à O.
    _ tu fais la rotation de ces deux points de 90°, de centre O et de vecteur n.
    _ tu fais la translation de ces 4 points par le vecteur -Longueur*n .

    Personnellement je préfère chercher une bonne base qui me permet de créer les points facilement.

    Pour le cylindre c'est du même style.

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    L'idée de la base est bonne pour le cube car elle permet d'économiser des rotations en ne faisant que des translations, mais pour le cylindre il faudrait trouver une base dans un "repère cylindrique".

    La procédure doit pouvoir s'appliquer à n'importe quel polyèdre et dans le cas général la rotation semble plus appropriée même si l'axe de rotation n'est pas constant.

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/08/2005, 20h18
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 02h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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