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 :

Transformations autres que translation, scaling, rotation et shearing


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut Transformations autres que translation, scaling, rotation et shearing
    Bonjour la communauté!
    Hormis la translation, le scaling, la rotation, le shearing (le plus souvent dans le plan), et leurs composées éventuelles, savez-vous s'il existe d'autres transformations du plan ou de l'espace? Si oui, pouvez-vous m'en donner une notation matricielle s'il-vous-plaît?

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Je suis loin d'être un expert en matrices, mais il me semble que les transformations que tu cites sont les plus 'connues' car elles forment la base des transformations utilisés en rendu 2D et 3D, et surtout pzrce qu'elle sont applicables dans une matrice homogène.

    Il me semble qu'une autre transformation - qui n'est pour le coup plus homogène - est la projection (typiquement pour projeter les coordonnées 3D d'un objet d'une scène en coordonnées 2D pour le rendu à l'écran).
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  3. #3
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    Bonjour,

    Il y a aussi la réflexion il me semble. Et puis quelques détails supplémentaires :
    - rotation autour d'un axe arbitraire avec un angle donné
    http://fr.wikipedia.org/wiki/Matrice...xe_de_rotation
    - scale dans une direction arbitraire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    |1 + (k - 1) * nx²     (k - 1) * nx * ny     (k - 1) * nx * nz|
    |(k - 1) * nx * ny     1 +(k  -1) * ny²      (k - 1) * ny * nz|
    |(k - 1)  *nx * nz     (k - 1) * ny * nz     1 + (k - 1) * nz²|
    avec k le facteur de scale, et n le vecteur unitaire représentant la direction dans laquelle tu veux effectuer le scale.

    - projection orthographique sur un axe ou un plan cardinal,

    - projection orthographique sur un axe ou un plan arbitraire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    |1 - nx²     -nx * ny     -nx * nz|
    |-nx * ny   1 - ny²       -ny * nz|
    |-nx * nz   -ny * nz       1 - nz²|
    Avec n le vecteur unitaire perpendiculaire à la line ou au plan de projection.

    Voilà ce sont les seul que je connaisse

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Merci pour vos infos, surtout Kromagg. Au fait, auriez-vous la matrice d'une réflexion s'il-vous-plaît? C'est une transformation dans le plan (symétrie axiale?) ou dans l'espace (symétrie planaire?)?

  5. #5
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    Bonjour,

    Une réflexion se fait par rapport à un hyper plan. Donc dans l'espace, ce sera une symétrie planaire. Il s'agit simplement d'une mise à l'échelle de facteur -1, dans la direction que tu souhaites (qui sera la normale du plan de réflexion)

    Note qu'il te faudra jouer avec des translations si tu ne veux pas que le plan passe par l'origine.

    On peut donc calculer une matrice de réflexion par rapport au plan d'équation ax+by+cz+d=0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    | 1-2-2ab   -2ac  2ad(a²+b²+c²)+1 |
    |  -2ab  1-2-2bc  2bd(a²+b²+c²)+1 |
    |  -2ac   -2bc  1-22cd(a²+b²+c²)+1 |
    |    0     0      0           1        |
    Sauf erreur de ma part...

    [EDIT] oups !!! Le calcul de la dernière colonne est totalement erroné. Voici la version corrigée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    | 1-2-2ab   -2ac  2ad(a²+ab+ac) |
    |  -2ab  1-2-2bc  2bd(ab+b²+bc) |
    |  -2ac   -2bc  1-22cd(ac+bc+c²) |
    |    0     0      0           1      |
    Cette fois, je l'ai verifiée.

    Et pour répondre à la question de départ : toutes les similitudes (c'est-à-dire les composées d'isométries et d'homothéties) sont des composées de rotation, translation et changement d'échelle. C'est pour cela qu'en général on ne cite que celles-ci.
    Mieux vaut prévoir que patcher.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Merci razmott pour cette matrice de réflexion. Auriez-vous un lien vers un site qui expliquerait le calcul en détail de cette matrice s'il-vous-plaît? Parce que j'ai fait un peu de géométrie dans l'espace à la fac mais :
    1) J'étais une brêle!
    2) J'ai tout oublié.
    3) Il ne me semble pas qu'on nous enseignait les écritures matricielles des transformations...
    Merci.

  7. #7
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    Bonjour,

    Désolé non, je n'ai pas de lien.

    Je peux cependant expliquer :
    Comme je l'ai dit, il s'agit d'une mise à l'échelle de facteur -1. La matrice correspondante a donc été donnée par Kromagg.

    Cependant il s'agit d'une matrice 3x3 qui représente donc une application linéaire. Ici, on veut représenter une transformation affine. On utilise donc des coordonnées homogènes et une matrice 4x4.

    La matrice est donc complété par une colonne et une ligne de 0 sauf pour la dernière case qui prend la valeur 1. On obtient à ce stade :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    | 1-2-2ab   -2ac  0 |
    |  -2ab  1-2-2bc  0 |
    |  -2ac   -2bc  1-20 |
    |    0     0      0    1 |
    qui représente une réfléxion par rapport au plan d'équation ax+by+cz = 0. Ce plan passe par l'origine.

    On peut obtenir une réflexion par rapprt à n'importe quel plan en composant par deux translations de vecteurs respectifs (ad,bd,cd) et (-ad,-bd-cd) dont les matrices sont connues, notons les T et T-1, avec l'équation du plan : ax+by+cz+d=0

    On a, par exemple, T =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    | 1 0 0 ad |
    | 0 1 0 bd |
    | 0 0 1 cd |
    | 0 0 0 1  |
    Avec M la matrice de mise à l'échelle, on a la matrice finale : T-1*M*T.

    J'espère que c'est clair.

    Note : pour obtenir la matrice M, il faut faire un peu d'algèbre linéaire.
    Note 2 : j'ai oublié mais dans tous les calculs, je suppose que le vecteur (a,b,c) est normé
    Mieux vaut prévoir que patcher.

  8. #8
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par TresNulDev Voir le message
    Bonjour la communauté!
    Hormis la translation, le scaling, la rotation, le shearing (le plus souvent dans le plan), et leurs composées éventuelles, savez-vous s'il existe d'autres transformations du plan ou de l'espace? Si oui, pouvez-vous m'en donner une notation matricielle s'il-vous-plaît?
    Hola,

    L'ensemble des transformations géométriques est résumé ici:
    http://fr.wikipedia.org/wiki/Transfo...om%C3%A9trique

    Et des explications sur les coordonnées homogènes (notation matricielle):
    http://fr.wikipedia.org/wiki/Coordon...homog%C3%A8nes

Discussions similaires

  1. rotation image/volume autre que la fonction de base
    Par S4sha dans le forum Général Python
    Réponses: 0
    Dernier message: 18/02/2010, 12h56
  2. Réponses: 1
    Dernier message: 01/07/2009, 17h41
  3. Minimize Maximize perso sur une form autre que Application
    Par sdebrois dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 07/03/2005, 17h59
  4. [JDBC] Programmation autre que Java
    Par Vow dans le forum JDBC
    Réponses: 2
    Dernier message: 23/06/2004, 11h22
  5. Rendre une disquette illisible par d'autres que moi
    Par kivoch dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 26/12/2003, 22h49

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