Cześć Próbuję dowiedzieć się, jak obliczyć odwrotność kwaternion. Przykład kodu byłby świetny.Oblicz kwaternion Inverse
Cheers
Cześć Próbuję dowiedzieć się, jak obliczyć odwrotność kwaternion. Przykład kodu byłby świetny.Oblicz kwaternion Inverse
Cheers
Zobacz Wikipedia article dla całej czwartorzędnej matematyki.
Nie wiem, jakiego języka chcesz użyć, ale postaram się podać kilka wskazówek w Haskell.
data Quaternion = Q Double Double Double Double deriving (Show, Eq)
Najpierw należy wprowadzić mnożenie i dodawanie kwaternionów.
instance Num Quaternion where
(+) = q_plus
(*) = q_mult
--....
q_plus (Q a b c d) (Q a' b' c' d') = Q (a + a') (b + b') (c + c') (d + d')
q_mult (Q a b c d) (Q a' b' c' d') = Q a'' b'' c'' d''
where
a'' = a * a' - b * b' - c * c' - d * d'
b'' = a * b' + b * a' + c * d' - d * c'
c'' = a * c' - b * d' + c * a' + d * b'
d'' = a * d' + b * c' - c * b' + d * a'
mnożenie skalarne powinno się odbywać za pomocą konwersji:
scalar_to_q a = Q a 0 0 0
zdefiniować
i = Q 0 1 0 0
j = Q 0 0 1 0
k = Q 0 0 0 1
Następnie realizacji koniugatu i moduł:
q_conjugate q = (scalar_to_q (negate .5)) * (q + i * q * i + j * q * j + k * q * k)
q_modulus q = sqrt $ q * (q_conjugate q)
Teraz odwrotność :
q_inverse q = (q_conjugate q) * (scalar_to_q (m * m))
where
m = q_modulus q
Mam nadzieję, że przyda się.
PS: powyższa definicja instancji uprości pewne czynności po pomyślnym zakończeniu. Pozwalam ci wypełnić luki.
Dziękuję. Niesamowita odpowiedź! – user346443
Dlaczego to pytanie jest zamknięte, jest to uzasadnione pytanie z pytaniem, jak obliczyć odwrotność kwaternionu. Czy StackOverflow nie jest zbytnio moderowany? – kaalus
Spójrz na Matrix and Quaternion FAQ. Istnieje również kilka próbek kodu.
@TabbyCool Jak on "spróbuje" cokolwiek? Czy spodziewasz się, że dosłownie dostanie pióro i notatnik i odkryje na nowo matematyczne dzieło, które zajęło ludzkości przez setki lat? – MaiaVictor