2010-10-26 118 views
14

Biến quaternion chỉ là một vectơ với X, Y, Z mà đối tượng sẽ quay về phía trước và một cuộn quay đối tượng trên trục của nó?Xoay vòng quaternion là gì?

Điều đó có đơn giản không?

Có nghĩa là nếu bạn có X = 0, Z = 0 và Y = 1 đối tượng sẽ hướng lên trên?
Và nếu bạn có Y = 0, Z = 0 và X = 1 đối tượng sẽ phải đối mặt bên phải?

(giả sử X đúng, Y và Z chiều sâu)

Trả lời

35

Một quaternion có 4 thành phần, trong đó có thể liên quan đến một góc θ và một vector trục n. Xoay sẽ làm cho đối tượng quay về trục n theo góc θ.

Ví dụ, nếu chúng ta có một khối như

______ 
|\ 6 \ 
| \_____\  z 
|5 | | : y^
\ | 4 | \| 
    \|____|  +--> x 

Sau đó, vòng xoay cảng gồm 90 ° về trục (x = 0, y = 0, z = 1) sẽ xoay "5" mặt từ bên trái phía trước.

______ 
|\ 6 \ 
| \_____\  z 
|3 | | : x^
\ | 5 |  \| 
    \|____| y<--+ 

(Lưu ý:. Đây là mô tả trục/góc quay, đó là những gì OP lẫn lộn trong bao quaternion được áp dụng cho vòng quay, xem http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation)

+0

đường hoặc lối đi bên trái? – clamp

+0

@clamp: Tùy thuộc vào hệ thống là thuận tay trái hay thuận tay phải. – kennytm

+0

OP cho biết "Y up và Z depth". – LarsH

15

Một quaternion nói chung là một phần mở rộng của một số phức thành 4 chiều. Vì vậy, không, chúng không chỉ là x, y, và z, và một góc, nhưng chúng gần gũi. dưới đây thêm ...

Quaternions có thể được sử dụng để represent rotation, vì vậy họ đang có ích cho đồ họa:

Unit quaternion cung cấp một tiện lợi ký hiệu toán học cho đại diện định hướng và quay các đối tượng trong ba chiều . So với các góc Euler , chúng đơn giản hơn để soạn và tránh vấn đề khóa gimbal. So với ma trận xoay, chúng là ổn định về số lượng và có thể là hiệu quả hơn.

Vì vậy, 4 thành phần và how do they relate to the rotation?

Các [đơn vị quaternion] điểm là gì (w, x, y, z) đại diện cho một vòng quay xung quanh trục của đạo diễn vector (x, y, z) bởi alpha góc = 2 cos -1 w = 2 sin -1 sqrt (x + y + z).

Vì vậy, trở lại câu hỏi của bạn,

Ý nghĩa nếu bạn có X = 0, Z = 0 và Y = 1 đối tượng sẽ phải đối mặt lên?

Không ... đối tượng sẽ xoay quanh vector <0,1,0> này, tức là xoay quanh trục y, xoay ngược chiều kim đồng hồ như đã thấy ở trên, nếu hệ thống đồ họa của bạn sử dụng xoay vòng bên phải. (Và nếu chúng ta cắm vào w = sqrt (1 - (0 + 1 + 0)), quaternion đơn vị của bạn là (0,0,1,0), và nó sẽ xoay theo góc 2 cos -1 0, = 2 * 90 độ = 180 độ hoặc pi radian.)

Và nếu bạn có Y = 0, Z = 0 và X = 1 đối tượng sẽ phải đối mặt bên phải không?

Điều này sẽ xoay quanh vectơ <1,0,0>, trục x, vì vậy nó sẽ xoay ngược chiều kim đồng hồ theo hướng x dương (ví dụ: bên phải). Vì vậy, đầu sẽ quay về phía trước (180 độ, do đó, nó sẽ xoay cho đến khi nó phải đối mặt xuống).

Các vấn đề liên quan