Vấn đề với các phép quay, là, hầu hết mọi người nghĩ về nó theo góc độ Euler, vì chúng dễ hiểu.
Tuy nhiên, hầu hết mọi người quên mất rằng các góc Euler là ba góc liên tiếp . Có nghĩa là xoay quanh trục đầu tiên, sẽ làm cho lần xoay tiếp theo tương đối với xoay ban đầu, do đó bạn không thể xoay độc lập một vectơ quanh mỗi trục 3 bằng các góc Euler.
Điều này trực tiếp chuyển thành ma trận khi bạn nhân hai ma trận, bạn có thể nghĩ phép nhân này là biến đổi một ma trận thành không gian của ma trận khác.
Điều này có nghĩa là xảy ra với bất kỳ 3 lần quay liên tiếp nào ngay cả khi sử dụng tứ phương.
Tôi muốn nhấn mạnh một thực tế rằng tứ phương không phải là một giải pháp cho khóa gimble. Trên thực tế, khóa gimble sẽ luôn xảy ra nếu bạn biểu diễn các góc Euler bằng cách sử dụng tứ phương. Vấn đề không phải là đại diện, vấn đề là các 3 bước tuần tự.
Giải pháp?
Giải pháp cho việc xoay một vectơ độc lập quanh 3 trục là kết hợp thành một trục đơn và một góc duy nhất, bằng cách này bạn có thể thoát khỏi bước mà bạn phải thực hiện phép nhân liên tiếp. Điều này sẽ chuyển thành hiệu quả:
Ma trận xoay của tôi biểu thị kết quả của phép quay quanh X và Y và Z.
thay vì giải thích Euler của
Ma trận xoay của tôi đại diện cho phép quay quanh X rồi Y rồi Z.
Để làm rõ điều này, tôi sẽ trích dẫn từ định lý xoay vòng của wikipedia Euler:
Theo định lý xoay của Euler, mọi phép quay hoặc chuỗi xoay của vật cứng hoặc hệ tọa độ về một điểm cố định đều tương đương với một góc quay bởi một góc cho trước về một trục cố định (gọi là trục Euler) chạy qua điểm cố định. Trục Euler thường được biểu thị bằng một vectơ đơn vị u →. Do đó, bất kỳ phép quay nào trong ba chiều có thể được biểu diễn dưới dạng kết hợp của vectơ u → và vô hướng. Đệ tứ đưa ra một cách đơn giản để mã hóa biểu diễn góc trục này theo bốn số và áp dụng phép xoay tương ứng cho một vectơ vị trí biểu thị một điểm liên quan đến điểm gốc trong R3.
Lưu ý rằng nhân 3 ma trận sẽ luôn đại diện cho 3 phép quay liên tiếp.
Bây giờ sắp xếp thứ tự để kết hợp các phép quay quanh 3 trục, bạn cần lấy một trục đơn và các góc đơn đại diện cho phép quay quanh X, Y, Z. Nói cách khác, bạn cần sử dụng biểu diễn Trục / Góc hoặc bậc bốn để thoát khỏi các phép quay liên tiếp.
Điều này thường được thực hiện, bằng cách bắt đầu với một định hướng ban đầu (định hướng có thể được coi là một góc trục), thường được biểu diễn dưới dạng góc thứ tư hoặc góc trục, sau đó sửa đổi định hướng đó để thể hiện hướng đích của bạn. Ví dụ: bạn bắt đầu với phần định danh và sau đó xoay theo sự khác biệt để đạt được hướng đích. Bằng cách này, bạn không mất bất kỳ mức độ tự do.