Dlzlogic a écrit:Bonjour,
Je ne suis pas tout à fait sûr que votre équation est correcte.
Ce n'est pas la méthode que j'utilise.
La forme générale d'un changement de repère en 3D est la suivante
X = TX + XX.x + XY.y + XZ.z
Y = TY + YX.x + YY.y + YZ.z
Z = TZ + ZX.x + ZY.y + ZZ.z
Il y 12 paramètres à calculer donc un système de 12 équation à 12 inconnues.
En partant de 4 points connus dans le repère de départ, on calcule leur position dans le repère d'arrivée.
Oubliez le fait qu'il y a des rotations, c'est trop compliqué.
Par contre vous avez 3 points, je parle de 4. Si vos 3 points ne sont pas dans l'un de 3 plans du repère, vous pouvez créer le 4è par simple symétrie. Mais il vaut mieux avoir 4 points indépendants (je peux expliquer pourquoi) De toute façon, il y a bien 12 paramètres dans la formule.
Vous me direz dans quel langage vous travaillez.
Bonjour,
En fait je ne cherche pas les équations de changement de repère. J'ai déjà pu les programmer dans le soft. Tout mon problème réside dans la recherche d'un nouveau repère sachant que je connais les coordonnées de 3 points dans ce nouveau repère et dans l'ancien. Mon système d'équation est issue de l'équation en Z via les 3 rotations + la translation.
J'ai un peu de mal expliquer ce que je recherche. Si vous voulez, normalement on connais le repère R et on sait passer les point de ce repère dans le repère R' car celui ci est exprimé via la série des 6 paramètres qui transforment R en R'. Moi je voudrais prendre le problème à l'envers, je ne connais pas R' mais je connais 3 points dans l'espace avec leur coordonnées dans R et R'.
Pour cela j'ai développé ma suite d'équation de transformation et utilisé la plus simple pour parvenir a calculer Rx, Ry, et O'z . J'utiliserai ensuite les autres pour trouver O'x,O'y, et Rz . Malheureusement je ne parviens pas a résoudre le premier système .
voici mon raisonnement :
Soit les 3 matrices de rotation + la translation. Nous partons du point de départ : P(X,Y,Z)
RX
|1 0 0 |
|0 cos(Rx) -sin(Rx)|
|0 sin(Rx) cos(Rx)|
Ry
|cos(Ry) 0 sin(Ry) |
| 0 1 0 |
|-sin(Ry) 0 cos(Ry) |
RZ
|cos(Rz) -sin(Rz) 0 |
| 0 cos(Rz) 0 |
| 0 0 1 |
T->O'x,O'y,O'z
développons simplement les 2 premières rotations X et Y :
(1) Xxy = X*cos(Ry) + Y*sin(Rx)*sin(Ry) + Z*cos(Rx)*sin(Ry)
(2) Yxy = Y*cos(Rx) - Z*sin(Rx)
(3) Zxy = -X*sin(Ry) + Y*sin(Rx)*cos(Ry) + Z*cos(Rx)*cos(Ry)
la suite est une translation Rz + une rotation, moi je veux juste un premier système d'équation
Si on regarde bien la coordonnée Z ne fait pas apparaitre Rz, ce qui est logique. donc j'ai juste à exprimer cette coordonnée en continuant le développement sur (3) avec la rotation Rz + la translation.
Je trouve donc :
Z'= Oz - X*sin(Ry) + Y*sin(Rx)*cos(Ry) + Z*cos(Rx)*cos(Ry)
étant donné que je connais 3 points je suis capable d'établir les 3 équations 3 inconnues énoncées précédemment.