rotations 3D - Algo - Programmation
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 !
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
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
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.
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?