2012-04-19 35 views
5

Tôi đã có một cặp vectơ. Làm thế nào tôi có thể tạo một quaternion mà quay từ một đến khác?Bắt quaternion để xoay giữa hai vectơ

+0

có thể trùng lặp của [Tìm quaternion đại diện cho vòng quay từ một véc tơ này sang một véc tơ khác] (http://stackoverflow.com/questions/1171849/finding-quaternion-representing-the-rotation-from-one-vector-to-another) – Boann

Trả lời

9

Một đơn vị quaternion q = cos (F) + u * sin (F) đại diện cho sự quay của vector v bởi góc 2 * F về trục u.

Nếu vectơ của bạn là vw, sau đó chúng ta nên bình thường hóa chúng, sau đó tính toán góc giữa chúng như 2 * F = ARccOS (Dot (v, w)). Vector hướng trục xoay u = Bình thường hóa (VectorProduct (v, w)). Bây giờ chúng ta có thể xây dựng quaternion quay cần thiết.

+1

Cũng có thể là một ý tưởng tốt để chuẩn hóa trục quay ** u ** sau khi nó được tính để duy trì một quaternion đơn vị, vì sản phẩm chéo của hai vectơ đơn vị chỉ được chuẩn hóa cho vectơ đầu vào trực giao. –

+0

@Christian Rau Bạn nói đúng, tôi đã bỏ lỡ sự chuẩn hóa này. Thêm. – MBo

+4

Lưu ý rằng trường hợp v = −w cần xử lý đặc biệt. –

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