Comment convertir les coordonnées d'Euler E1 = (x1, y1, z1, yaw1, Pitch1, roll1) à E2 = (x2, y2, z2, yaw2, pitch2, roll2) où x, y, z sont les coordonnées d'un point et lacet, tangage, rouler la direction/orientation d'un vecteur dont l'origine est le point. lacet est autour de y, tangage autour de x, rouler autour de z. Ils sont effectués dans cet ordre. Le lacet 0 est normal au plan xy (opposé à z dans E1 et égal à z dans E2).Comment changer la rectitude des coordonnées?
E1 utilise un espace droitier et E2 un espace gaucher. Les deux ont la même origine, la même direction pour y (haut) et z (dans l'écran). Ils diffèrent par x qui est à gauche sur E1 et à droite sur E2. Ils diffèrent également par leur direction des rotations positives.
J'ai un type personnalisé pour contenir la représentation scalaire et convertir de et vers la représentation WPF Matrix3d équivalente.
Habituellement, pour convertir d'une base arbitraire d'un espace vectoriel en un autre, vous résolvez simplement l'équation ₂ = ⋅ ₁ où est alors la matrice de transformation à convertir de ₁ en ₂. Puisque vous connaissez vos bases ((1, 1, 1) et (-1, 1, 1), respectivement) cela ne devrait pas être trop difficile. – Joey
Merci Johannes. Je ne suis pas une personne mathématique et ce n'est pas clair pour moi. J'ai essayé quelques combinaisons au hasard. Il semble que celui-ci fonctionne pour convertir gaucher à un espace WPF/droitier en utilisant un type "Point6DoF" personnalisé qui détient un point 3D et une direction de regard 3D: Point6DoF positionInRightHanded = new Point6DoF (-X, Y, Z , -Yaw, Pitch, -Roll). Est-ce que cela a du sens pour vous? – 742