Aller au menu - Aller au contenu

Icône La trigonométrie

Par Kayl
Mise à jour : 12/05/2009
Difficulté : Facile Facile
6 428 visites depuis 7 jours, dont 167 sur ce chapitre classé 35/786
Dans cette annexe mathématique nous verrons le concept mathématique de trigonométrie, généralement rencontré dès la classe de 3e dans le cursus français.
Nous nous contenterons de parcourir le minimum utile pour faire de la 3D et nous verrons que des outils mathématiques faciles d'utilisation peuvent nous être grandement utiles.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Trigo dans un triangle rectangle

La trigonométrie (littéralement « mesures » dans le « triangle »), est une branche des maths qui vient donner des relations entre les longueurs des côtés d'un triangle et ses angles.

La trigonométrie se rencontre généralement dans le cas d'un triangle rectangle :

Image utilisateur


En considérant l'angle alpha, on définit deux fonctions « cosinus » et « sinus » permettant de donner une relation entre la valeur de cet angle, et les longueurs des côtés du triangle :
Image utilisateur


En utilisant l'inverse de ces fonctions on peut alors trouver la valeur de l'angle en fonction des longueurs des côtés. On peut tout aussi bien, à partir de la valeur de l'angle et de la longueur d'un seul côté du triangle, trouver les longueurs des autres côtés.

Le cercle trigonométrique

Le triangle rectangle est la première approche que l'on a de la trigonométrie. On introduit généralement un autre objet mathématique : le cercle trigonométrique. Ce cercle mesure « 1 » (pas d'unité requise) de rayon et nous permet de donner tout leur sens au cosinus et sinus que nous venons de rencontrer :

Image utilisateur


Dans la figure ci-dessus on retrouve un triangle rectangle et donc nos formules vues plus haut sont toujours applicables :

Image utilisateur

Image utilisateur


Et là tout s'éclaire ! Alors qu'auparavant nous pensions que cos et sin étaient de simples mesures abstraites qui ne servaient pas à grand chose, ici on se rend compte grâce au cercle trigonométrique qu'elles permettent de donner l'abscisse (sur X) et l'ordonnée (sur Y) d'un point quelconque du cercle trigonométrique se trouvant à un angle alpha donné par rapport à l'origine.
On note au passage que les angles se mesurent ici dans le sens trigonométrique (c'est-à-dire le sens inverse des aiguilles d'une montre).

Systèmes de coordonnées

Nous avons vu rapidement dans le cas du cercle trigonométrique que nous pouvions passer d'un angle à une coordonnée (X,Y). Il est donc temps de faire un petit rappel non exhaustif sur les systèmes de coordonnées qui nous intéressent avec OpenGL.

Coordonnées cartésiennes



Image utilisateur


Les coordonnées cartésiennes sont les plus courantes. C'est d'ailleurs dans ce système que l'on exprime les positions de nos vertices avec OpenGL : glVertex3d( X, Y, Z);

Coordonnées polaires


Image utilisateur


Les coordonnées polaires sont un autre système de coordonnées que nous n'utiliserons pas trop mais qui nous sert d'intermédiaire pour bien comprendre la suite.
Un point est repéré par un angle (thêta) et un rayon (r). On y voit une généralisation du cercle trigonométrique (où r valait 1) et donc nous pouvons très facilement en déduire comment passer des coordonnées polaires aux coordonnées cartésiennes :

Image utilisateur


Exemple en OpenGL



Nous venons de voir qu'il est possible d'exprimer un même point dans des systèmes de coordonnées différents.
Nous pouvons donc envisager deux méthodes identiques en OpenGL pour faire tourner un point autour de l'origine :

Coordonnées polairesCoordonnées cartésiennes*
Code : C
1
2
3
4
glRotated(theta,0,0,1);
glBegin(GL_POINTS);
glVertex2i(r,0);
glEnd();
Code : C
1
2
3
4
5
6
7
#include <math.h>

x=r*cos(theta*M_PI/180);
y=r*sin(theta*M_PI/180);
glBegin(GL_POINTS);
glVertex2i(x,y);
glEnd();


* les angles en OpenGL sont exprimés en degrés, cependant cos et sin, les fonctions définies dans <math.h>, attendent des radians. Il faut donc les convertir en multipliant par M_PI/180.


Coordonnées sphériques



Ce système de coordonnées peut être vu comme une généralisation des coordonnées polaires en 3D. Il est très utile et nous servira notamment à contrôler l'orientation de notre caméra à l'aide de la souris.
En coordonnées sphériques, un point est représenté par un rayon r, et deux angles thêta et phi :

Image utilisateur


Pour passer des coordonnées sphériques aux coordonnées cartésiennes qui nous sont si chères, il faut y aller en deux étapes et se ramener à des cas 2D très simples.

Tout d'abord considérons seulement le rayon r et l'angle phi. Nous nous ramenons à un cas de coordonnées polaires sur le plan XZ :

Image utilisateur


Nous pouvons en déduire directement la coordonnée Z de notre point avec le sinus, et le cosinus nous permet de définir une variable intermédiaire rtemp.

Image utilisateur


rtemp est le rayon d'un cercle intermédiaire placé à l'altitude Z de notre point :

Image utilisateur


En regardant notre sphère du dessus et considérant le cercle de rayon rtemp avec le dernier angle thêta, nous sommes à nouveau dans un simple problème de coordonnées polaires. Il est donc aisé de déterminer les coordonnées X et Y finales de notre point :
Image utilisateur


En résumé nous avons donc tout simplement :
Image utilisateur


Comme je l'ai dit plus haut, ce système de coordonnées nous sera très utile car nous pourrons ainsi contrôler l'orientation de la caméra à la souris : l'angle thêta contrôle l'orientation horizontale du regard (comme quand on fait « non » de la tête) et l'angle phi contrôle l'orientation verticale du regard (comme quand on fait « oui » de la tête).
Ce chapitre, d'un niveau mathématique assez facile (collège), viens trouver tout son sens dans le chapitre : le contrôle avancé de la caméra, où nous contrôlons une caméra de type free-fly avec la souris et le clavier.
Chapitre précédent Sommaire Chapitre suivant

Partager

1 commentaire pour "La trigonométrie"
Note moyenne : 3.45 / 4 (138 votes)
Pseudo Commentaire
Hors ligne V@ldun # Posté le 13/06/2008 à 01:24:17
plop ? 8)>
Avatar

Hello Kayl,

Petites fautes remarquées en passant :
* La trigo se rencontre
* pouvons très facilement en déduire commencer passer
;)

Merci pour ce tuto. Tout ça remonte et finalement ça fait du bien d'y revenir, c'est même nécessaire !
(je suis venu sur ce tuto pour un programme en JS, c'est te dire...)
:)

<flottant valeur="droite"></flottant>Image utilisateur
Projet Area
Image utilisateur Image utilisateurkazayarama le chamow
"J'adore le travail, il me fascine et je peux rester assis des heures à le considérer." Jerome K. Jerome
 

Voir tous les commentaires
Ce tutoriel a été corrigé par les zCorrecteurs.