rotations 3D

rotations 3D - Algo - Programmation

Marsh Posté le 02-03-2009 à 20:26:43    

Bonjour,
 
je me casse la tête sur un problème depuis plusieurs semaines, j'ai beau chercher sur le net, je n'arrive pas à trouver quelque chose qui pourrait m'aider...
voici mon problème :
J'ai 3 points A, B et C dans un repère 3D (axe X, axe Y et axe Z). Je connais les coordonnées de A, B et C dans ce repère.
Il me faut trouver les 3 angles de rotations (angle de rotation selon l'axe X, angle de rotation selon l'axe Y, angle de rotation selon l'axe Z) nécessaires pour réaliser une rotation de centre A et permettant de passer du point B au point C.
l'ordre des rotations peut être aléatoire, dans un premier temps j'utilise essentiellement l'ordre suivant : rotation selon Z puis rotation selon X puis rotation selon Y.
 
J'ai essayé plusieurs choses, mais je n'arrive jamais à trouver un résultat correct...
Est ce que quelqu'un aurait une solution?idée?un site qui peut m'aider?
 

Reply

Marsh Posté le 02-03-2009 à 20:26:43   

Reply

Marsh Posté le 03-03-2009 à 09:17:46    

Si on connait les mathématiques, on peut utiliser les matrices de rotation, voir en français http://fr.wikipedia.org/wiki/Matrice_de_rotation ou l'article en anglais qui donne beaucoup plus d'informations, http://en.wikipedia.org/wiki/Rotation_matrix . Ce n'est pas obligatoire. On peut se débrouiller sans matrices, avec juste du bon sens. Mais dans un cadre scolaire, l'utilisation des matrices est généralement ce que souhaite le professeur.
 
En pratique, il y a souvent une seconde difficulté qui est la représentation en deux dimensions des points d'un espace en trois dimentions. Il faut allors faire une projection. Mais il en existe de plusieurs sortes. On peut avoir une vue cavalière (comme en dessin industriel de base), ou bien avoir une vue comme celle d'un oeil, mais alors cela dépend de la focale choisie (du grand angle avec des coins très arrondis ou une vision de loin très peu arrondie).
 
Bon courage !

Reply

Marsh Posté le 03-03-2009 à 09:28:42    

pour les rotations, on priviligiera l'utilisation des Quaternions plutot que les matrices qui psoent un certians nombres de problemes
 
http://fr.wikipedia.org/wiki/Quaternion
et précisement :
http://fr.wikipedia.org/wiki/Quate [...] ectorielle

Reply

Marsh Posté le 03-03-2009 à 11:18:26    

+1 pour les quaternions
 
Une rotation de centre A qui amène B sur C c'est une rotation d'axe (AB vectoriel AC), et d'angle (AB,AC)  
 
Donc tu as un angle, et un axe. Avec ça tu as un quaternion q = (x,y,z,w) qui vaut
x = axe_x * sin(angle/2)
y = axe_y * sin(angle/2)
z = axe_z * sin(angle/2)
w = cos(angle/2)
 
Ce quaternion équivaut à une matrice de rotation 3x3 qui vaut
m11 = 1 - 2*yy - 2*zz
m12 = 2xy - 2zw
m13 = 2xz + 2yw
 
m21 = 2xy + 2zw
m22 = 1 - 2xx - 2zz
m23 = 2yz - 2xw
 
m31 = 2xz - 2yw
m32 = 2yz + 2xw
m33 = 1 - 2xx - 2yy  
 
De cette matrice de rotation on peut sortir les angles d'Euler (pas directement mais c'est pas trop dur)
 
 
Après on peut aussi faire des projections sur les 3 plans  :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 06-03-2009 à 15:16:48    

Note quand même qu'il n'est pas toujours possible d'amener ton point B sur ton point C par une rotation de centre A. Il faut que les distances AB et AC soient égales.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed