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

Algorithmes et structures de données Discussion :

Les matrices


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut Les matrices
    Bonjour,

    Etant donné mon faible niveau de maths je voudrais savoir :

    je declare ma matrice les lignes et colonnes, et si je veux en OpenGL par exemple mettre la valeur de eyex :

    glulookat(eyex, eyey, eyez, 0,0,0,0,1,0);

    pour déplacer la caméra je dois normaliser le vecteur X ? je sais pas tellement ce que veut dire normaliser mais je pense qu'en faites normaliser un vecteur revient à calculer la valeur d'un vecteur exemple :

    vecteur_x = 0, 0.50, 0.35
    vecteyr_x_normaliser = 0.40

    comme vous aurez pu le remarquer j ai pas mal de difficulter avec ceci :/

    pour l'instant j ai compris ceci :

    pour la matrice X c'est :

    1 0 0 0
    0 cos() -sin() 0
    0 sin() cos() 0
    0 0 0 1

    si je me trompe pas, et donc pour cette matrice

    vecteur X = 1,0,0
    vecteur Y = 0,cos(),sin()
    vecteur Z = 0 sin(),cos()
    vecteur O = 0,0,0

    mais on a pas de valeur concrete :/

    merci d'avance de votre aide

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    bien le bonjour,

    attention au vocabulaire, pour un vecteur, on parle de vecteur normal et de vecteur normé.
    un vecteur A est normal à un vecteur B s'il lui est orthogonal.
    un vecteur A est normé si sa norme (sa longueur) est 1.

    Citation Envoyé par countag
    pour déplacer la caméra je dois normaliser le vecteur X ?
    pour déplacer ta caméra, il faut modifier les valeurs de eyex, eyey, eyez, c'est tout.

    Dès qu'on commence à manipuler des concepts, il faut être très vigilant sur le vocabulaire.
    normaliser un vecteur revient à calculer la valeur d'un vecteur
    ça ne veut rien dire. un vecteur n'a pas de valeur.

    Il ne faut pas penser ta matrice en terme de vecteurs, mais en terme de modifications qu'elle apporte sur un vecteur.

    1 0 0 0
    0 cos() -sin() 0
    0 sin() cos() 0
    0 0 0 1

    doit juste être considérée comme une matrice de rotation autour de l'axe X.
    tu donnes un vecteur à ta matrice, et elle t'en donne un autre.
    tu as un vecteur v et la matrice précédente notée M, alors v sera transformé en le vecteur v*M.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    mais ce que je comprends pas, (désolé je pense que c'est un peu de l'opengl) c'est que dans la matrice, nous avons un vecteur X et dans glulookat il nous demande une valeur pour X alors comment on fait la conversion ?

  4. #4
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    tu as donc un vecteur X(a,b,c,d) (4 composantes si tu es en coordonnées homogènes, sinon 3) et tu cherches l'image de X par la rotation dont tu connais la matrice, c'est bien ça ?
    l'image X' de X est X*M, de la forme X'(a',b',c',d')
    et tu veux placer ta caméra en X', donc il faut donner aux variables eyex, eyey et eyez les valeurs a'/d', b'/d' et c'/d'

    d'abord on calcule les nouvelles coordonnées homogènes de la caméra, on détermine les coordonnées x,y,z correspondantes, et on appelle la fonction glulookat avec ces nouvelles valeurs.

    Etait-ce là ta question ?

    Note: c'est pour ne pas avoir à faire toi-même les calculs matriciels qu'OpenGL propose les fonctions de multiplication de matrices pour des rotations, translations ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    mon problème surtout est par exemple :

    j'ai un vecteur X(0, 5, 9, 0);

    je peux pas mettre ceci :

    glulook(vecteur X(0, 5, 9, 0), 0,0,0,0,0,0,0,0);

    il faut que vecteur X corresponde à une valeur non ?

  6. #6
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    en coordonnées homogènes, un vecteur donc la dernière composante est nulle, c'est un souci. on va dire que c'est juste ton exemple.

    pour un vecteur X(0,5,9,4), il va falloir appeler
    glulookat(0/4,5/4,9/4
    , 0,0,0
    , 0,0,0);

    remarque: les 3 dernières valeurs représentent une direction. 0,0,0 n'est pas approprié. Là aussi, on va dire que c'est juste ton exemple.

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

Discussions similaires

  1. Les matrices
    Par countag dans le forum C++
    Réponses: 6
    Dernier message: 12/05/2006, 20h41
  2. STL et les matrices...
    Par Rodrigue dans le forum SL & STL
    Réponses: 21
    Dernier message: 08/05/2006, 20h22
  3. Les matrices
    Par Mathieu008_67 dans le forum DirectX
    Réponses: 17
    Dernier message: 24/10/2005, 14h02
  4. Comprendre les matrices 3D
    Par tavman dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 11/09/2005, 13h18
  5. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10

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