Espace 3D et formes primitive – [initiation]

L’espace tridimensionnelle cartésien est un espace assez simple à aborder. Il possède l’ensemble des propriétés de l’espace cartésien bidimensionnel à cela prêt que l’ajout d’une dimension offre une nouvelle perspective : la profondeur.

Cet espace est habituellement représenté par les axe X, Y, Z suivant :

espace3D-01

Afin de comprendre cet espace il est important de connaitre le sens des différents axes.
Nous savons que par convention, l’espace bidimensionnel de notre programme est inversé, notre point d’origine 0,0 étant en haut à gauche, les x s’incrémentant de gauche à droite et les y s’incrémentant de haut en bas. De la cas de l’axe Z, celui-ci va en se décrémentant. Ainsi un objet loin de notre point de vue aura une position z inférieur de celle d’un objet proche de notre point de vu.
Nous obtenons alors le schéma suivant :

espace3D-02

Enfin il est important de noter que la position z de notre « oeil » ou point de vue sera de 0 par défaut. Celui-ci regardant dans le sens inverse nous observons alors que notre axe z visible sera un axe inférieur à 0 et se décrémentant. Il sera donc négatif.

L’espace tridimensionnel rajoute donc un concept de point de vu qu’il sera important de maîtriser afin de déplacer son point de vue dans son espace.

Transformations de matrice afin de déplacer son point de vue

Afin de maîtriser son point de vue et donc la position dans un espace nous allons utiliser une méthode vue précédemment pour changer un système de coordonnées, les transformations de matrice.
Nous savons qu’il nous est possible de déplacer notre point d’origine où l’on souhaite dans notre programme et ce sur un axe XY. Il en est de même pour un espace 3D. Dans l’exemple suivant nous allons dessiner un rectangle de taille 20, positionner en 0,0 puis nous verrons comment en changer son point de vue à l’aide des transformations de matrices.

Lorsque nous dessinons notre rectangle en position 0,0,0 nous obtenons l’image suivante.

Notre rectangle, de position 0,0,0 n’est visible que de moitié. Si nous souhaitons le placer au centre de notre programme tout en conservant sa position nous utiliserons une transformation de matrice. Il est est de même si nous souhaitons changer sa position sur l’axe Z. Ainsi nous pouvons obtenir les transformations suivante :

Dans notre cas nous allons positionner notre rectangle en z -100 et au centre de notre programme.

Rotations de matrice

Nous savons, dans un espace bidimensionnel, qu’il nous est possible d’effectuer un rotation de notre objet par le biais d’une rotation de matrice. Cette transformation nous est toujours possible dans un espace 3D en devenant plus précise puisque nous pouvons désormais effectuer des rotations sur un axe choisi.

espace3D-03

Pour ce faire nous allons utiliser les méthodes suivantes

Si nous reprenons notre exemple ci-dessus et que nous appliquons à chacun des axes X,Y,Z un angle s’incrémentant respectivement de 0.01, 0.02, 0.03 radians, nous obtenons alors de notre objet rectangle, une rotation différente sur chacun de ses axes.

Formes primitives

Comme pour l’espace 2D, processing possède des formes primitives en 3D, celle-ci nous permettent d’obtenir rapidement une forme 3D sans avoir à dessiner l’ensemble de ses sommets.
Les deux principales formes primitives sont la box et la sphère.

Nous remarquons qu’aucune de ses formes primitives ne possèdent de position x,y,z, ces dernières devant être définies par des transformations de matrice.
Certaines formes primitives 2D sont elle aussi disponible dans un espace 3D par le simple ajout d’une position z.

Enfin, comme nous l’avons vu précédemment, il nous est toujours possible d’utiliser des formes primitives 2D (rect, quad, triangle…) dans un espace 3D lorsque nous utilisons des transformations de matrice.