2010-02-04 31 views
7

Các ma trận và góc Euler có thể bị khóa Gimbal nhưng một số đối số khác để sử dụng cái nào khác?Ưu điểm và nhược điểm của việc sử dụng Ma trận, Euler Angles và Quaternions cho biểu diễn xoay vòng là gì?

Bạn nghĩ gì về DirectX?

Bạn sử dụng chương trình C++/C/DirectX hàng ngày như thế nào?

+0

không liên quan đến chương trình –

+0

Jestro: Đọc ở đây: http://en.wikipedia.org/wiki/Gimbal_lock có vẻ như phán quyết là sử dụng quaternions .Nhưng tôi không có kinh nghiệm trực tiếp (chơi chữ). –

+2

@Mitch: Điều này chắc chắn là lập trình có liên quan, bất kỳ ai làm việc với đồ họa 3D giao dịch với những thứ này hàng ngày –

Trả lời

12

Góc Euler chỉ yêu cầu ba tham số, thay vì lưu trữ ma trận (hoặc ba, nhưng âm thanh quá mức). Tuy nhiên, khi bạn áp dụng vòng quay Euler, bạn có thể sẽ kết thúc với một cái gì đó tương đương với ba phép nhân để tạo phép biến đổi. Nếu bạn chỉ sử dụng ma trận, bạn có thể không phải chịu chi phí đắt như vậy (tùy thuộc vào cách ma trận được xây dựng). Bên cạnh Gimbal Lock, cũng có một vấn đề với hiệu ứng hủy bỏ khi biểu diễn ma trận nội suy của phép quay mà bạn cần phải cẩn thận.

Bạn có thể muốn xem xét quaternions. Họ yêu cầu bốn thông số lưu trữ, vì vậy chúng không phải là rất nặng. Chúng tránh khóa Gimbal và có thể được nội suy để tạo ra các phép quay trơn tru. Một điều có thể được hiểu là nhược điểm của quaternion là chúng có thể không trực quan đối với một số người. Các phép biến đổi ma trận và góc Euler có một dạng cuộn-yaw-pitch hoặc spin-precession-nutation khá trực quan. Quaternions giống như một vòng quay duy nhất về một số trục kết thúc kết thúc bằng cách này hoặc theo cách đó.

Có thể có trường hợp ai đó thích một phương pháp hơn các phương pháp khác, vì vậy đây chỉ là một số điều cần cân nhắc khi đưa ra quyết định.

+1

+1. nội suy và giải quyết khóa gimbal là lý do tại sao tôi thích quaternions hơn. Nhưng thực tế là hầu hết mọi người dường như sử dụng Ma trận đều có lợi thế riêng. –

+0

Tôi nghĩ rằng cần lưu ý rằng Ma trận không thể đi vào Gimbal Lock (chúng lưu trữ hướng, không quay). – Cygon

0

Nó không thực sự liên quan đến directx. Bạn có thể sử dụng một trong hai phương pháp, nhưng cho là quaternions dễ dàng hơn để đối phó với dữ liệu hoạt hình. Nếu không, bạn không có một cách tiêu chuẩn duy nhất để giải quyết nó và do đó nó làm cho việc diễn giải dữ liệu qua các chương trình trở nên khó khăn hơn.

0

Quaternions là đến nay khó khăn nhất để làm chủ, nhưng một khi bạn hiểu những gì họ đang về bạn sẽ tìm thấy chúng đáng ngạc nhiên dễ sử dụng. Tôi coi chúng là một giải pháp tốt hơn sau đó Euler Angles/Matrix biến đổi bởi vì chúng đối phó với một vấn đề mà 2 giải pháp khác thì không. "Khóa Gimball".

+0

Một bài viết khác đề cập đến "Khóa Gimbal" là tài sản chuộc của Quaternions. Đây chỉ là vấn đề với Euler Angles, không phải ma trận hay quaternion đều dễ bị tổn thương. – Cygon

4

Các góc Euler bị dị biệt và khó thực hiện. Biểu diễn ma trận KHÔNG có vấn đề đó trái ngược với một số câu trả lời ở đây. Một biểu diễn ma trận của định hướng có thể bị lỗi tích lũy bởi vì bạn đang sử dụng 9 số cho một cái gì đó mà chỉ có 3 bậc tự do. Quaternions là rất thú vị toán học, nhưng vào cuối ngày họ đang thực sự làm một ma trận 4x4 nhân.

Một quaternion cũng có thể được xem như là một 3vec đại diện cho một trục quay và chiều dài của nó có liên quan đến góc quay về trục đó (sin squared?). Tham số thứ 4 được tính toán để làm cho độ dài của 4vec bằng 1. Cách giải thích này có thể được chuyển đổi thành ma trận định hướng tương đương.

Biểu diễn ma trận có thể bao gồm thông tin tỷ lệ và có thể được mở rộng thành 4x4 để bao gồm thông tin vị trí cũng như định hướng. Bạn có thể chuyển đổi cả vectơ vị trí và hướng bằng cách sử dụng phép biến đổi ma trận mà không thể thực hiện được bằng hai phép kia.

Bạn có thể làm một số lượng đáng kinh ngạc của công cụ rất đơn giản với ma trận 4x4. Góc Quaternions và Euler chỉ làm định hướng. Yeah, chỉ một điều thôi. Tôi đoán sở thích/thiên vị của tôi về vấn đề này khá rõ ràng :-)

+0

Nói chung, tôi cũng thích biến đổi affine hơn. Nhưng nếu tôi làm động vật gì đó, tôi có thể đi theo tuyến đường quaternion vì lý do nội suy. Đối với thành phần đồ thị cảnh, biến đổi affine âm thanh giống như sự lựa chọn tốt hơn. Nếu ai đó đang viết một công cụ xoay cho người lập mô hình hay gì đó, thì góc Euler có thể cảm thấy tự nhiên hơn. –

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