Hướng dẫn inverse of quaternion python - nghịch đảo của trăn quaternion

Xem bài viết Wikipedia cho toàn bộ toán học bậc bốn.

Không biết bạn muốn sử dụng ngôn ngữ nào nhưng tôi sẽ cố gắng đưa ra một số gợi ý trong Haskell.

data Quaternion = Q Double Double Double Double deriving (Show, Eq)

Đầu tiên, bạn cần thực hiện phép nhân và bổ sung các bậc bốn.

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'

Việc nhân với vô hướng nên được thực hiện thông qua chuyển đổi:

scalar_to_q a = Q a 0 0 0

Định nghĩa

i = Q 0 1 0 0
j = Q 0 0 1 0
k = Q 0 0 0 1

Sau đó thực hiện liên hợp và mô đun:

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)

Bây giờ, nghịch đảo:

q_inverse q = (q_conjugate q) * (scalar_to_q (m * m))
  where
    m = q_modulus q

Hy vọng nó hữu ích.

PS: Định nghĩa trường hợp ở trên sẽ đơn giản hóa mọi thứ một chút nếu hoàn thành thành công. Tôi cho phép bạn điền vào các khoảng trống.

________ 6 ________ 33 (*args, ** kwargs) [Nguồn] ¶

Tính toán số mũ của bậc bốn

quat (numpy.array) - Quê vị.(*args, **kwargs)[source]

numpy.array.

Parameters:
  • quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
  • vec (numpy.array) - vector. (numpy.array) – The vector.
Loại trở lại:

numpy.array

Returns:

Các vectơ xoay bởi bậc bốn.

Raises:

ValueError - được nâng lên nếu vectơ có kích thước không được hỗ trợ – raised if the vector is an unsupported size

________ 6 ________ 9 (*args, ** kwargs) [nguồn](*args, **kwargs)[source]

Tính toán một bậc bốn với vòng quay đối diện.

Parameters:quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
Loại trở lại:Các vectơ xoay bởi bậc bốn.
Returns:ValueError - được nâng lên nếu vectơ có kích thước không được hỗ trợ
________ 6 ________ 9 (*args, ** kwargs) [nguồn](x=0.0, y=0.0, z=0.0, w=1.0, dtype=None)[source]pyrr.quaternion.
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'
3(*args, **kwargs)[source]pyrr.quaternion.
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'
5(*args, **kwargs)[source]pyrr.quaternion.
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'
7(*args, **kwargs)[source]

Tính toán một bậc bốn với vòng quay đối diện.

quat (numpy.array) - Quê vị.(*args, **kwargs)[source]

numpy.array.

Một bậc bốn đại diện cho liên hợp.(*args, **kwargs)[source]pyrr.quaternion.
scalar_to_q a = Q a 0 0 0
3(theta, dtype=None)[source]pyrr.quaternion.
scalar_to_q a = Q a 0 0 0
5(theta, dtype=None)[source]pyrr.quaternion.
scalar_to_q a = Q a 0 0 0
7(theta, dtype=None)[source]pyrr.quaternion.
scalar_to_q a = Q a 0 0 0
9(*args, **kwargs)[source]

________ 6 ________ 11 (x = 0,0, y = 0,0, z = 0,0, w = 1.0, dtype = none) [nguồn] ] ________ 6 ________ 17 (*args, ** kwargs) [nguồn] ¶

Tạo một bậc bốn từ một tập hợp các góc Euler.not communicative. Therefore, order is important.

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ________ 6 ________ 19 (*args, ** kwargs) [nguồn]

Tạo một bậc bốn từ nghịch đảo của một tập hợp các góc Euler.(quat1, quat2)[source]

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ____ ____ 6 ____ ____ 21 (*args, ** kwargs) [nguồn] Không có) [Nguồn] ____ ____ 6 ________ 27 (theta, dtype = none)

Trả về sản phẩm chéo của hai bậc bốn.

Parameters:
  • Đệ tứ không giao tiếp. Do đó, trật tự là quan trọng. (numpy.array) – The first quaternion(s).
  • Điều này không giống như một sản phẩm chéo vector. Sản phẩm chéo Quarternion tương đương với phép nhân ma trận. (numpy.array) – The second quaternion(s).
Loại trở lại:

________ 6 ________ 31 (Quat1, Quat2) [Nguồn] ¶

Returns:

Tính toán sản phẩm chấm của Đệ tứ.

Điều này giống như một sản phẩm chấm vector.(*args, **kwargs)[source]

Quat1 (Numpy.Array) - Đệ tứ đầu tiên.

Parameters:quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
Loại trở lại:Các vectơ xoay bởi bậc bốn.
Returns:ValueError - được nâng lên nếu vectơ có kích thước không được hỗ trợ
________ 6 ________ 9 (*args, ** kwargs) [nguồn][source]
i = Q 0 1 0 0
j = Q 0 0 1 0
k = Q 0 0 0 1
6 = 3¶

Tính toán một bậc bốn với vòng quay đối diện.

quat (numpy.array) - Quê vị.

numpy.array.

Một bậc bốn đại diện cho liên hợp.

________ 6 ________ 11 (x = 0,0, y = 0,0, z = 0,0, w = 1.0, dtype = none) [nguồn] ] ________ 6 ________ 17 (*args, ** kwargs) [nguồn] ¶

Tạo một bậc bốn từ một tập hợp các góc Euler.

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ________ 6 ________ 19 (*args, ** kwargs) [nguồn]

Tạo một bậc bốn từ nghịch đảo của một tập hợp các góc Euler.(quat)[source]

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ____ ____ 6 ____ ____ 21 (*args, ** kwargs) [nguồn] Không có) [Nguồn] ____ ____ 6 ________ 27 (theta, dtype = none)

Trả về sản phẩm chéo của hai bậc bốn.

Parameters:Đệ tứ không giao tiếp. Do đó, trật tự là quan trọng. (numpy.array) – The quaternion to invert.
Loại trở lại:Các vectơ xoay bởi bậc bốn.
Returns:ValueError - được nâng lên nếu vectơ có kích thước không được hỗ trợ
________ 6 ________ 9 (*args, ** kwargs) [nguồn](quat)[source]pyrr.quaternion.
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)
5(quat)[source]

Tính toán một bậc bốn với vòng quay đối diện.

quat (numpy.array) - Quê vị.

Parameters:numpy.array. (numpy.array) – The quaternion to check.
Loại trở lại:Một bậc bốn đại diện cho liên hợp.
Returns: ________ 6 ________ 11 (x = 0,0, y = 0,0, z = 0,0, w = 1.0, dtype = none) [nguồn] ] ________ 6 ________ 17 (*args, ** kwargs) [nguồn] ¶
Tạo một bậc bốn từ một tập hợp các góc Euler.(quat)[source]

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ________ 6 ________ 19 (*args, ** kwargs) [nguồn]

Parameters:numpy.array. (numpy.array) – The quaternion to check.
Loại trở lại:Một bậc bốn đại diện cho liên hợp.
Returns: ________ 6 ________ 11 (x = 0,0, y = 0,0, z = 0,0, w = 1.0, dtype = none) [nguồn] ] ________ 6 ________ 17 (*args, ** kwargs) [nguồn] ¶
Tạo một bậc bốn từ một tập hợp các góc Euler.(quat)[source]

Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ________ 6 ________ 19 (*args, ** kwargs) [nguồn]

Parameters:Tạo một bậc bốn từ nghịch đảo của một tập hợp các góc Euler. (numpy.array) – The quaternion to measure.
Loại trở lại:Eulers là một mảng có độ dài 3 theo thứ tự sau: [cuộn, cao độ, ngáp] ____ ____ 6 ____ ____ 21 (*args, ** kwargs) [nguồn] Không có) [Nguồn] ____ ____ 6 ________ 27 (theta, dtype = none)
Returns:Trả về sản phẩm chéo của hai bậc bốn.
Đệ tứ không giao tiếp. Do đó, trật tự là quan trọng.(quat1, quat2, t)[source]

Điều này không giống như một sản phẩm chéo vector. Sản phẩm chéo Quarternion tương đương với phép nhân ma trận.

________ 6 ________ 31 (Quat1, Quat2) [Nguồn] ¶(*args, **kwargs)[source]

Tính toán sản phẩm chấm của Đệ tứ.

Điều này giống như một sản phẩm chấm vector.

Parameters:quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
Loại trở lại:Quat1 (Numpy.Array) - Đệ tứ đầu tiên.
Returns:Quat2 (numpy.array) - Quê vị thứ hai (s).
Phao, numpy.array(quat)[source]

Nếu một mảng 1D được thông qua, nó sẽ là một vô hướng. Nếu không, kết quả sẽ là một mảng vô hướng với hình dạng vec.ndim với kích thước cuối cùng là kích thước 1.

________ 6 ________ 33 (*args, ** kwargs) [Nguồn] ¶not changed in place.

Parameters:Tính toán số mũ của bậc bốn (numpy.array) – The quaternion to normalize.
Loại trở lại:Quat1 (Numpy.Array) - Đệ tứ đầu tiên.
Returns:Quat2 (numpy.array) - Quê vị thứ hai (s).
Phao, numpy.array(quat)[source]

Nếu một mảng 1D được thông qua, nó sẽ là một vô hướng. Nếu không, kết quả sẽ là một mảng vô hướng với hình dạng vec.ndim với kích thước cuối cùng là kích thước 1.

________ 6 ________ 33 (*args, ** kwargs) [Nguồn] ¶not changed in place.

Parameters:Tính toán số mũ của bậc bốn (numpy.array) – The quaternion to normalize.
Loại trở lại:Quat1 (Numpy.Array) - Đệ tứ đầu tiên.
Returns:Quat2 (numpy.array) - Quê vị thứ hai (s).
Phao, numpy.array(*args, **kwargs)[source]

Nếu một mảng 1D được thông qua, nó sẽ là một vô hướng. Nếu không, kết quả sẽ là một mảng vô hướng với hình dạng vec.ndim với kích thước cuối cùng là kích thước 1.

________ 6 ________ 33 (*args, ** kwargs) [Nguồn] ¶not changed in place.

Parameters:
  • quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
  • vô hướng (float) - số mũ. (float) – The exponent.
Loại trở lại:

numpy.array.

Returns:

Một bậc bốn đại diện cho Đệ tứ ban đầu cho sức mạnh được chỉ định.

________ 6 ________ 61 (Quat) [Nguồn] ¶(quat)[source]

Tính toán vòng quay xung quanh trục bậc bốn.

Parameters:quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
Loại trở lại:Một bậc bốn đại diện cho Đệ tứ ban đầu cho sức mạnh được chỉ định.
Returns: ________ 6 ________ 61 (Quat) [Nguồn] ¶
Tính toán vòng quay xung quanh trục bậc bốn.(*args, **kwargs)[source]

quat (numpy.array) - Quê vị.

Parameters:quat (numpy.array) - Quê vị. (numpy.array) – The quaternion.
Loại trở lại:trôi nổi.
Returns:Vòng quay bậc bốn về trục của nó trong radian.
________ 6 ________ 63 (*args, ** kwargs) [Nguồn] ¶(quat1, quat2, t)[source]

Tính toán trục của vòng quay bậc bốn.

numpy.array.(quat)[source]

Trục xoay Quarternion.

________ 6 ________ 65 (Quat1, Quat2, T) [Nguồn] ¶

Parameters:Hình cầu nội suy giữa Quat1 và Quat2 bởi t.Tham số T được kẹp vào phạm vi [0, 1] (numpy.array) – The quaternion to measure.
Loại trở lại: ________ 6 ________ 67 (Quat) [Nguồn] ¶
Returns:Tính toán chiều dài bình phương của một bậc bốn.