Máy tính Quaternion là gì?
Quaternion là một số bốn chiều được viết dưới dạng \(q = w + xi + yj + zk\), trong đó w là phần vô hướng (phần thực) và (x, y, z) là phần vectơ (phần ảo). Quaternion được sử dụng rộng rãi trong đồ họa máy tính 3D, robot, hàng không vũ trụ và vật lý để biểu diễn các phép quay mà không gặp lỗi khóa gimbal (gimbal lock) như khi dùng góc Euler. Công cụ này nhân hai quaternion, đồng thời cho biết chuẩn của mỗi quaternion đầu vào và liên hợp của quaternion thứ nhất.
Cách sử dụng
Nhập bốn thành phần (w, x, y, z) cho mỗi quaternion q1 và q2. Máy tính sẽ trả về tích Hamilton q1 × q2 dưới dạng một quaternion mới, độ lớn (chuẩn) của cả hai đầu vào, và liên hợp của q1. Lưu ý rằng phép nhân quaternion không có tính giao hoán: nói chung q1 × q2 ≠ q2 × q1, nên thứ tự rất quan trọng.
Giải thích công thức
Tích Hamilton kết hợp phần vô hướng và phần vectơ. Kết quả vô hướng bằng w₁w₂ trừ đi tích vô hướng (dot product) của hai phần vectơ. Kết quả vectơ là w₁v₂ + w₂v₁ cộng với tích có hướng (cross product) v₁ × v₂. Chuẩn là độ dài Euclid √(w²+x²+y²+z²), còn liên hợp chỉ đơn giản là đổi dấu các thành phần vectơ: q* = (w, −x, −y, −z).
$$\begin{gathered} q_1 q_2 = (w_1 w_2 - x_1 x_2 - y_1 y_2 - z_1 z_2) + (w_1 x_2 + x_1 w_2 + y_1 z_2 - z_1 y_2)\,i \\ + (w_1 y_2 - x_1 z_2 + y_1 w_2 + z_1 x_2)\,j + (w_1 z_2 + x_1 y_2 - y_1 x_2 + z_1 w_2)\,k \\[1.5em] \text{where}\quad \left\{ \begin{aligned} q_1 &= \text{w}_1 + \text{x}_1\,i + \text{y}_1\,j + \text{z}_1\,k \\ q_2 &= \text{w}_2 + \text{x}_2\,i + \text{y}_2\,j + \text{z}_2\,k \end{aligned} \right. \end{gathered}$$
$$q_1^{*} = \text{w}_1 - \text{x}_1\,i - \text{y}_1\,j - \text{z}_1\,k$$
$$\lVert q_1 \rVert = \sqrt{\text{w}_1^{2} + \text{x}_1^{2} + \text{y}_1^{2} + \text{z}_1^{2}}$$
$$\lVert q_2 \rVert = \sqrt{\text{w}_2^{2} + \text{x}_2^{2} + \text{y}_2^{2} + \text{z}_2^{2}}$$
Ví dụ minh họa
Giả sử \(q_1 = (1, 2, 3, 4)\) và \(q_2 = (5, 6, 7, 8)\). Phần vô hướng là $$1\cdot 5 - 2\cdot 6 - 3\cdot 7 - 4\cdot 8 = 5 - 12 - 21 - 32 = -60.$$ Thành phần i là $$1\cdot 6 + 2\cdot 5 + 3\cdot 8 - 4\cdot 7 = 6 + 10 + 24 - 28 = 12.$$ Thành phần j là $$1\cdot 7 - 2\cdot 8 + 3\cdot 5 + 4\cdot 6 = 7 - 16 + 15 + 24 = 30.$$ Thành phần k là $$1\cdot 8 + 2\cdot 7 - 3\cdot 6 + 4\cdot 5 = 8 + 14 - 18 + 20 = 24.$$ Vậy \(q_1 \times q_2 = (-60, 12, 30, 24)\).
Câu hỏi thường gặp
Phép nhân quaternion có tính giao hoán không? Không. Vì có thành phần tích có hướng nên q1 × q2 nói chung khác với q2 × q1.
Quaternion đơn vị là gì? Là quaternion có chuẩn bằng 1. Quaternion đơn vị biểu diễn các phép quay thuần túy trong không gian 3D.
Làm thế nào để quay một vectơ? Coi vectơ như một quaternion với w = 0 và tính \(q \cdot v \cdot q^{*}\), trong đó q là quaternion đơn vị mã hóa phép quay.