Skocz do zawartości

Problem z obrotem względem dwóch osi w 3D


Platyna

Rekomendowane odpowiedzi

Ogarniam sobie silnik Ultimate3D i napotkałem na pewien problem.

 

Otóż obrót trójwymiarowego obiektu w tym silniku polega na zmianie wartości zmiennych rotx, roty, rotz obiektu. Ja potrzebuje obracać jeden obiekt względem osi x i z.

Z tym, że jeżeli obiekt już obrócę względem x to oś z zmieni orientację i ten obrót będzie nie według tej początkowej osi z tylko tej już obróconej względem x.

Przykładowo:

Jeśli najpierw obrócę obiekt względem x o 180 stopni, obiekt będzie jakby do góry nogami i orientacja osi z będzie odwrotna. No i wtedy jeśli będę obracał według z to obiekt zamiast normalnie isę kręcić będzie sie obracał w przeciwną stronę.

 

No, więc jak można prosto wyliczyć wartości rotx i roty, aby się obrócił o zadaną wartość wzlędem tych początkowych osi?

 

W GMowym 3D był pewna przydatna funkcja która obracała obiekt według jakiejś tam własnej osi i kąt wystarczyło wyliczyć z pitagorasa, ale Ultimate chyba tkiej funkcji nie ma.

 

Ogólnie wiec trzeba jakoś chyba tak wyliczyć te wartości rotx, rotz żeby to się obróciło o sqrt(sqr(rotx)+sqr(rotz)) według takiej jakby osi będącej "uśrednieniem" osi x i z.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...