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

Contribuez Discussion :

[FAQ] [MATRICES ET QUATERNIONS] Inverse d'une matrice de Rotation


Sujet :

Contribuez

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Points : 4
    Points
    4
    Par défaut [FAQ] [MATRICES ET QUATERNIONS] Inverse d'une matrice de Rotation
    Salut,
    Dans la faq il est dit
    que s'il s'agit d'une matrice de rotation autour de X, Y ou Z, inverser la matrice revient à calculer sa transposée.
    C'est faux. L'inverse d'une matrice de rotation est toujours sa transposée, quelque soit l'axe de rotation.

    A noter qu'il y a pas mal d'approximation dans la faq, surtout vis a vis des anges d'euler et des equivalence quaternion mais la je n'ai pas trop le temps de faire un gros post.

    A+

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ajoute que ici,
    les matrices de rotations sont des matrices 4*4, alors qu'habituellement, on utilise des matrices de rotations 3*3 pour les appliquer justement à des vecteurs appartenant à un espace de dimension 3.

    Donc ce point reste obscure.

    Pour les quaternions, vous définissez l'inverse avant la multiplication !! Pourtant en général, on introduit l'inverse en utilisant la multiplication.
    (par exemple :
    Soit x un quaternion, y est l'inverse de x si et seulement si
    x * y = 1 où * est la multiplication usuelle dans l'espace des quaternions)
    Je ne répondrai à aucune question technique en privé

  3. #3
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Cette FAQ souffre encore de nombreux défauts et n'est pas facile à corriger de manière à la fois exacte et simple, donc n'hésitez pas

    Par contre :
    les matrices de rotations sont des matrices 4*4, alors qu'habituellement, on utilise des matrices de rotations 3*3 pour les appliquer justement à des vecteurs appartenant à un espace de dimension 3.
    En programmation 3D on n'utilise presque exclusivement que des matrices 4x4.
    Un peu d'explications ici :
    http://jeux.developpez.com/faq/matquat/?page=bases#Q1

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Laurent Gomila
    Par contre :

    En programmation 3D on n'utilise presque exclusivement que des matrices 4x4.
    Un peu d'explications ici :
    http://jeux.developpez.com/faq/matquat/?page=bases#Q1
    Oui, oui, je sais, mais je disais juste que présenté comme ça, ça peut paraître étrange. Juste avant, on parle de point dans un espace à deux dimensions et on a une matrice de rotation 2*2, et après, dans l'espace (a priori de dimensions 3), on tombe sur une matrice 4*4. Je trouve que ça manque d'explication à cet endroit.
    Je ne répondrai à aucune question technique en privé

  5. #5
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par millie
    Oui, oui, je sais, mais je disais juste que présenté comme ça, ça peut paraître étrange. Juste avant, on parle de point dans un espace à deux dimensions et on a une matrice de rotation 2*2, et après, dans l'espace (a priori de dimensions 3), on tombe sur une matrice 4*4. Je trouve que ça manque d'explication à cet endroit.
    Effectivement on peut peut-être faire quelque chose pour ça. Si tu as une idée...

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    En fait, en essayant de comprendre un peu plus, j'ai trouvé quelque chose de bizarre.

    Les matrices que traitent les cartes graphiques dans la partie "transformation et éclairage" sont des matrices 4x4. La raison d'être de ces matrices, c'est qu'elles représentent de manière très pratique certaines opérations non linéaires dans l'espace en 3D (translation, projection conique sur un plan), en ajoutant une quatrième coordonnée (la coordonnée homogène).
    Mais une projection simple (pas conique) ou une rotation simple sont des applications linéaires. Donc pas besoin de matrice 4*4, une matrice 3*3 suffit. Non ?
    Je ne répondrai à aucune question technique en privé

  7. #7
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Oui mais en pratique ça ne sert à rien de faire la distinction, les API et le hardware manipulent uniquement des matrices 4x4. Les matrices que tu cites ne seront donc que des matrices 3x3 auquelles on va rajouter une ligne et une colonne nulle (avec l'élément [4, 4] à 1).

  8. #8
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par millie
    Mais une projection simple (pas conique) ou une rotation simple sont des applications linéaires. Donc pas besoin de matrice 4*4, une matrice 3*3 suffit.
    Aucun hardware (GPU) ne fait la distinction matrice de translation/matrice de rotation/matrice de projection (dans sa section transform and lighting). En pratique tu peux tout concaténer en une seule.
    Si tu écris ton propre vertex shader par contre tu peux sacrifier un peu de généralité pour ton cas particulier si tu penses que ça va économiser des constantes/opérations flottantes (si tu as besoin des résultats intermédiaires).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  9. #9
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    je dirais même plus : le hardware prfère les operation sur les vecteur à 4 dimensions, donc utiliser des matrice 3x3 n'est pas plus rapide et est finalement moins flexible
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/09/2007, 16h28
  2. Inverse d'une matrice
    Par tralf dans le forum C
    Réponses: 11
    Dernier message: 11/04/2007, 17h00
  3. Inversion d'une matrice carrée d'ordre
    Par rassol3 dans le forum C
    Réponses: 2
    Dernier message: 01/12/2006, 09h40
  4. inversion d'une matrice, probleme algebrique
    Par le_voisin dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 11/09/2006, 18h39
  5. Réponses: 4
    Dernier message: 08/08/2006, 13h10

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