Tôi là một nhà vật lý và đã học lập trình, và đã gặp rất nhiều người sử dụng quaternion cho phép quay thay vì viết mọi thứ dưới dạng ma trận / vectơ.
Trong vật lý, có những lý do chính đáng để chúng ta không sử dụng quaternion (mặc dù câu chuyện kỳ lạ thỉnh thoảng được kể về Hamilton / Gibbs / etc). Vật lý yêu cầu các mô tả của chúng ta phải có hành vi phân tích tốt (điều này có ý nghĩa được xác định chính xác, nhưng theo một số cách khá kỹ thuật vượt xa những gì được dạy trong các lớp học giới thiệu thông thường, vì vậy tôi sẽ không đi sâu vào bất kỳ chi tiết nào). Hóa ra là các quaternion không có hành vi tốt đẹp này, và do đó chúng không hữu ích, và vectơ / ma trận thì có, vì vậy chúng tôi sử dụng chúng.
Tuy nhiên, bị hạn chế đối với các phép quay và mô tả cứng nhắc không sử dụng bất kỳ cấu trúc phân tích nào, phép quay 3D có thể được mô tả tương đương theo một trong hai cách (hoặc một số cách khác).
Nói chung, chúng ta chỉ muốn ánh xạ điểm X = (x, y, z) đến điểm mới X '= (x', y ', z') tuân theo ràng buộc X 2 = X ' 2 . Và có rất nhiều thứ làm được điều này.
Cách đơn giản là chỉ cần vẽ các tam giác mà nó xác định và sử dụng lượng giác, hoặc sử dụng phép đẳng cấu giữa một điểm (x, y, z) và một vectơ (x, y, z) và hàm f (X) = X 'và ma trận MX = X ', hoặc sử dụng quaternion, hoặc chiếu các thành phần của vectơ cũ dọc theo vectơ mới bằng một số phương pháp khác (x, y, z) T. (a, b, c) (x', y ', z '), v.v.
Từ quan điểm toán học, những mô tả này đều tương đương trong thiết lập này (như một định lý). Tất cả chúng đều có cùng số bậc tự do, cùng số lượng ràng buộc, v.v.
Vậy tại sao quaternion dường như được ưa thích hơn vectơ?
Những lý do thông thường mà tôi thấy là không có khóa gimbal hoặc các vấn đề về số.
Đối số không có khóa gimbal có vẻ kỳ quặc, vì đây chỉ là vấn đề của góc euler. Nó cũng chỉ là một vấn đề tọa độ (giống như điểm kỳ dị tại r = 0 trong tọa độ cực (Jacobian tụt hạng)), có nghĩa là nó chỉ là một vấn đề cục bộ và có thể được giải quyết bằng cách chuyển tọa độ, xoay vòng từ suy biến, hoặc sử dụng hai hệ tọa độ trùng nhau.
Tôi ít chắc chắn hơn về các vấn đề số, vì tôi không biết chi tiết cách cả hai điều này (và bất kỳ lựa chọn thay thế nào) sẽ được triển khai. Tôi đã đọc rằng việc chuẩn hóa lại một quaternion dễ dàng hơn so với làm điều đó cho một ma trận xoay, nhưng điều này chỉ đúng với một ma trận tổng quát; một phép quay có các ràng buộc bổ sung làm nhỏ điều này (được xây dựng trong định nghĩa của các quaternion) (Trên thực tế, điều này phải đúng vì chúng có cùng số bậc tự do).
Vì vậy, lý do cho việc sử dụng quaternion trên vectơ hoặc các lựa chọn thay thế khác là gì?