SOMMAIRE

Les Tests

Hardware

Dossier complet : Quake2

La 3D sous Java

AAAARGH !!!!

Courrier des lecteurs

Questionnaire

Downloads

Our Links

Archives


Envoyer un E-mail
UIN icq : 8500461

 

Initiation à la 3D


 

Hé bien voici la deuxième partie de cette initiation consacrée à la 3D sous java... Rappelez vous, le mois dernier, nous avions mis en place le concept de Bases 3D et de coordonnées homogènes. Aujourd'hui premier contact avec le vecteur et ses transformations...
 

Le Sommet 3D ou point

Un sommet 3D homogène est un point de l'espace, défini par quatre coordonnées (X, Y, Z et W)... Il découle directement de ce que nous avons vu précédement...  Donc je n'aurais pas besoin de m'éterniser là-dessus.

Le vecteur 3D

Un vecteur 3D est la translation qui transforme un sommet A en un sommet B, cette translation se nommant !AB (désolé mais je n'ai pas trouvé comment afficher la petite flèche réglementaire, si vous savez dites le moi).
Un vecteur peut être défini par les coordonnées du point origine et du point d'extrémité soit [(AX, AY, AZ);(BX , BY, BZ)].
Il peut aussi être défini par ses composantes, c'est à dire les différences entre les coordonnées du point d'extrémité et d'origine :
 (DX, DY, DZ) où  DX =  BX - AX
                            DY = BY - AY
                            DZ = BZ - AZ

Vous connaissez sûrement les propriétés des vecteurs:
- la norme (la longueur) d'un vecteur est égale à  racine (DX ² + DY ² + DZ ²).
- un vecteur !AA est dit nul car sa norme est nulle
- L'opposé du vecteur !AB est !BA ou -!AB
- l'addition de vecteurs s'effectue selon la relation de Chasles : !AB = !AC + !CB
- la mutiplication d'un vecteur *AB par un réel k est égale à k*!AB

Voila je pense que ça suffira... Ah, si !! Il faut savoir que l'angle formé par un vecteur sur le plan xoy (le plan "horizontal") se nomme alpha et l'angle formé sur le plan zox se nomme théta...
 
 



C'est y pas beau la géométrie...


 






Entrons maintenant dans le monde terrifiant des matrices...
 

Le monde terrifiant des matrices... (bis)

Tout d'abord qu'est ce qu'une matrice? Eh  bien c'est une sorte de tableau de valeurs ...

          [x11, x12, x13, x14]
          [x21, x22, x23, x24]
M1 = [x31, x32, x33, x34]
          [x41, x42, x43, x44]
          [x51, x52, x53, x54]

Voici par exemple la matrice M1 de 5 lignes et 4 colonnes. Chaque élément est désigné suivant sa ligne et sa colonne ex : x32
Il existe donc une infinité de matrice différentes, mais heureusement  nous n'allons nous servir que de 2 d'entre elles seulement...
La matrice ligne "Vecteur"  MV = [DX, DY, DZ, DW] et la matrice magique "carrée" qui est une matrice 4*4... Vous l'aurez deviné, elle est constituée de 4 lignes et 4 colonnes...

           [x11, x12, x13, x14]
           [x21, x22, x23, x24]
MC = [x31, x32, x33, x34]
           [x41, x42, x43, x43]

Bon, c'est bien beau tout ça mais comment qu'on s'en sert? Hein, comment? HEIN, TU VAS PARLER CHAROGNE !!! ALLEZ CRACHE LE MORCEAU !!!
Ok, ok, ok... Je vais tout vous dire... Mais avant d'accéder à la connaissance absolue en matière de transformation matricielle, il vous faudra apprendre quelques règles, forts simples (ouf )...
Tout d'abord, deux matrices ayant le même nombre (m) de ligne et (n) de colonnes peuvent être additionnées (ou soustraites). Cette opération étant commutative, c.a.d  MA + MB = MB + MA.

One little example of addition (Yeah!!) :

[2  5]    [11 5]    [2 + 11  5 + 5]    [13  10]
[3  7] + [2   9] = [3 + 2  7 + 9 ] = [5  16]
[8  4]    [1  7]     [8 + 1   4 + 7]     [9  11]

Avouez que c'est plutôt simple non?
Bon malheureusement, ce n'est pas l'addition matricielle que nous utiliserons en 3D, mais la multiplication, qui est un peu plus complexe...Argh!!

Intéressons nous donc à la mutiplication vectorielle...
 

                                                                                                                      [x11, x12, x13, x14]
                                                                                                                      [x21, x22, x23, x24]
Soit la matrice  vecteur MV = [DX, DY, DZ, DW] et la matrice carrée MC = [x31, x32, x33, x34]
 
 


                                                                            [x41, x42, x43, x43]


 


Alors MV*MC = [ mX, mY, mZ, mW ]

Avec : mX = DX * x11 + DY * x21 + DZ * x31 + DW * x41
          mY = DX * x12 + DY * x22 + DZ * x32 + DW * x42
          mZ = DX * x13 + DY * x23 + DZ * x32 + DW * x43
          mW = DX * x14 + DY * x24 + DZ * x34 + DW * x44

Bon, ca peut paraître compliqué mais il n'y a absolument rien à comprendre. C'est juste du "par-coeur"...
Grâce à la multiplication vous allez pouvoir faire subir à un vecteur toute sorte de translations:

La matrice de translation

    Elle permet de déplacer un vecteur dans le plan selon 3 valeurs TX, TY, TZ
              [1     0     0     0]
              [0     1     0     0]
    MT = [0     0     1     0]
              [TX  TY  TZ  1]

La matrice de rotation

    Il y en a de trois sortes:

    Autour de l'axe des absisses (x)

                [1     0       0        0]
                [0    cos a  sin a   0]
    MRx = [0   -sin a   cos a  0]
                [0    0        0        1]

    Autour de l'axe des ordonnées (y)

                [cos a   0      -sin a   0]
                [0        cos a  sin a    0]
    MRy = [0      -sin a   cos a   0]
                [0        0        0        1]

  Autour de l'axe des côtes (z)

                [cos a   sin a     0        0]
                [-sin a   cos a   0        0]
    MRz = [0       -sin a     cos a  0]
                [0         0         0        1]
 

La matrice de changement d'échelle

    Elle permet de changer la norme d'un vecteur selon 3 valeurs EX, EY, EZ
              [EX   0      0     0]
              [0      EY   0     0]
    ME = [0      0      EZ   0]
              [0      0      0     1]
 

Ouf !! C'est fini pour cette fois, si vous n'avez rien compris,
relisez l'article bien tranquillement ou arrêtez de mater Laggaf' a la TV...