Załóżmy, że obiekt porusza się po okręgu opisanym takim równaniem. Inną trajektorię można sprowadzić do tej przez odpowiednią transformację (translację, skalowanie, obrót).
x = sin(t)
y = cos(t)
z = 0
Aby obiekt również obracał się w kierunku swojego ruchu, można wyznaczyć jego macierz lokalnego obrotu konstruując ją z 3 wzajemnie prostopadłych, jednostkowych wektorów.
- Jeden będzie w kierunku do centrum, wokół którego krążymy (punktu 0, 0, 0), czyli: (-sin(t), -cos(t), 0).
- Drugi będzie prostopadły do pierwszego w płaszczyźnie xy. Wektor prostopadły w 2D wyznacza się przez zamianę miejscami komponentów i zanegowanie jednego z nich. Będzie to więc albo (cos(t), -sin(t), 0), albo (-cos(t), sin(t), 0) - wypróbuj, który zadziała.
Trzeci będzie (0, 0, 1) albo (0, 0, -1) - wypróbuj, który zadziała.
Jak już najdziesz kombinację, która powoduje, że obiekt podczas ruchu faktycznie obraca się w tę stronę, co trzeba, a nie w przeciwną, to zostaje jeszcze rozwiązać prawdopodobny problem złej orientacji początkowej - czyli że np. zawsze jest górą albo lewym bokiem do kierunku ruchu, a nie przodem. Aby to naprawić, trzeba zaaplikować jakąś stałą macierz rotacji o 90 stopni wokół jakiejś osi przed zastosowaniem tej bieżącej. To też można wyprowadzić teoretycznie albo znaleźć właściwą metodą prób i błędów :)