przeliczenie obrotów w 3D - z osi na eulera

0

Mam obrót dookoła dowolnej osi: n = x,y,z, i o kąt f.

Jak z tego wyliczyć te trzy kąty Eulera, znaczy trzy obroty, kolejno dookoła osi: x,y i z ?

fx = ? fy = ? fz = ?

0

Przeciwprostokątna(długość) * sins(kąt względem x) = punkt y względem osi

0

To co podałem wcześniej było względem osi Z.

Inne osie powinny być analogiczne.

X powinna być wysokością y * kątem z :) itp.

0

Niestety, ale Twierdzenie Eulera można zastosować tylko do obrotu wokół punktu, a nie osi, więc lipa.
https://en.wikipedia.org/wiki/Euler_angles
http://mathworld.wolfram.com/EulerAngles.html

0

Zatem jakie są te trzy kąty - nie ma?

w przeciwną stronę łatwo to wyliczyć, znaczy tak: trzy obroty -> oś + jeden kąt.

Po prostu mnożymy trzy kwaterniony:
qx = cos(fx/2), sin(fx/2)(1,0,0)
qy = cos(fy/2), sin(fy/2)
(0,1,0)
qz = cos(fz/2), sin(fz/2)*(0,0,1)

wtedy:
q = qz.qy.qx = cos(f/2), sin(f/2)*n.

No, ale mi chodzi o odwrotną operację, czyli jak odzyskać te trzy: qx,qy i qz, z finalnego q.

0

a może nie ma z tym problemu.
https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles

eq

tam jest: a13 = -sin(fy) - w pierwszej kolumnie na dole.
zatem: fy = arcsin(-a13);

no i tak po kolei wyciskamy te kąty;

c23 = sin(fx)cos(fy) -> sin(fx) = cos(fy)/c22, no a kąt fy już mamy, więc wyliczamy fx (o ile c22 <> 0);

i potem:
fz = ...

0

A X * sin(alfa) + F(x) * sin(afla)?
Wzór na dowolną funkcję przesuniętą o kąt alfa.

0

Nie wiem co tam bazgrolisz bezmyślnie jak małpolud-poliglota... napisz jak człowiek to zobaczym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1