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 :

transformer une matrice 3x3 en matrice 2x2


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 27
    Points
    27
    Par défaut transformer une matrice 3x3 en matrice 2x2
    salut à tous,

    je me demandai si il etait possible de transformer une matrice 3x3 (rotation XYZ) en matrice 2x2 (XY et projection pour les Z)

    résultat espéré (la donnée Z a étée prise en compte dans le calcul qui a consisté a passer de la matrice 3x3 a celle ci):
    [ cos sin]
    [-sin cos]

    esque c'est possible, ou esque je dois chercher un autre outil mathematique ?, merci par avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut projection
    Bonjour,
    Moi je te conseil de garder ta matrix de rotation 3x3 de cette maniere si par la suite tu veut appliquer d'autre transformation sur ton objet tu n'aura cas multiplier cette matrix.

    Une fois les coordonnees modifier par cette matrix tu peut appliquer un principe de projection 2d isometrique par exemple :

    X = cst1 * x - cst2 * y
    Y = z + (cst1 / 2) * x + (cst2 / 2) * y

    ou cst1 et cst2 definise l'ecatement entre les pixel.

    voici par exemple une image cree par cette projection:
    fdf : fils de fer
    de cette maniere tu peut continuer a travailler avec ton environmement 3d avec ta matrix 3x3 et appliquer le resulta en 3d sur une surface 2d

  3. #3
    Membre actif Avatar de babar63
    Homme Profil pro
    Développeur jeux vidéos/3d Temps réel
    Inscrit en
    Septembre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur jeux vidéos/3d Temps réel

    Informations forums :
    Inscription : Septembre 2005
    Messages : 241
    Points : 207
    Points
    207
    Par défaut
    En règle générale, il convient d'ajouter une dimension aux matrices afin d'effectuer des opérations telles que la translation ou la projection, si tu travaille sur une scène 3D il est donc préférable d'utiliser une matrice 4*4, Tu pourra ainsi définir une matrice de rotation et un matrice de projection. Pour effectuer ton calcul il te suffit ensuite de multiplier ta position par la matrice de rotation puis la matrice de projection. Pour ce qui est de la rotation tu peux définir une matrice selon un axe de rotation et un angle, mais tu peux également utiliser les matrices d'Euler ou même les quaternions (d'autres....?). Pour plus d'informations jettes un oeil sur la faq : Matrices et Quaternions
    EDIT: Pour les scènes en 2 dimensions le principe est inchangé mais avec des matrices 3*3. Si tu le souhaite tu peux également définir la formule donné par notour en matrice de projection assez facilement

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 27
    Points
    27
    Par défaut
    merci pour les liens

    en fait le problème c'est que je gère déja mes rotations de manière classique avec la matrice 3x3 (euler->mat3x3->rotation->projection perspective) mais j'ai absolument besoin de la matrice 2x2 avec la donnée Z déja prise en compte pour pouvoir l'envoyer à mon GPU qui ne sais gérer que les matrices 2x2 pour la rotation .
    (faire de la pseudo 3D avec un GPU 2D qui ne recoit en parametre que des sin et cos sous forme de matrice 2x2)

    je vais ptet partir sur une formule (euler->mat3x3->rotation->euler->projection->mat2x2) ca serai peut-être plus logique (ca m'a l'air ultra casse gueule quand même )

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 395
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 395
    Points : 20 502
    Points
    20 502
    Par défaut
    Eh bien excuses-moi Orand une solution idiote qui me vient à l'esprit : et si tu faisais comme une pile de matrice , telle ou telle matrice 2x2 tu associes une transformation ?
    (faire de la pseudo 3D avec un GPU 2D qui ne recoit en parametre que des sin et cos sous forme de matrice 2x2)
    Ok et plus précisément, quelle tech ?

  6. #6
    Membre actif Avatar de babar63
    Homme Profil pro
    Développeur jeux vidéos/3d Temps réel
    Inscrit en
    Septembre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur jeux vidéos/3d Temps réel

    Informations forums :
    Inscription : Septembre 2005
    Messages : 241
    Points : 207
    Points
    207
    Par défaut
    (faire de la pseudo 3D avec un GPU 2D qui ne recoit en parametre que des sin et cos sous forme de matrice 2x2)
    Pourquoi "pseudo-3D" je ne vois pas? Si tu travaille réellement sur 3dimensions utilises des matrices 4*4 et calcules toi même les coordonnées final en 2dimensions (il manque juste la matrice de projection qui va bien tu peux utiliser celle d'openGL par exemple glOrtho) ! Pourquoi faire compliqué avec une matrice de cos et sin, je ne vois pas l'utilité... Si jamais ma solution ne convient pas essaye de donner plus de précision sur ce que tu veux faire, sur les outils dont tu disposes... Enfin tout ce qui pourrait nous aider à comprendre le problème plus clairement

Discussions similaires

  1. transformer une colonne txt en matrice
    Par helpme13 dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/11/2013, 22h15
  2. Transformer une matrice à une image
    Par stiko83 dans le forum C++
    Réponses: 24
    Dernier message: 01/08/2006, 23h11
  3. Réponses: 18
    Dernier message: 24/07/2006, 19h30
  4. Réponses: 15
    Dernier message: 26/06/2005, 15h53
  5. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 16h52

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