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...
|