1 điểm bởi GN⁺ 2024-06-16 | 1 bình luận | Chia sẻ qua WhatsApp

Các cách biểu diễn khác nhau của phép quay 3D

Ma trận quay

  • Ma trận quay là ma trận trực giao 3x3, trong đó mỗi cột biểu thị vị trí của các trục x, y, z sau khi quay.
  • Ưu điểm: Hữu ích cho việc biến đổi điểm và có thể dễ dàng kết hợp với các phép biến đổi tuyến tính khác.
  • Nhược điểm: Không phù hợp để thao tác trực tiếp với bản thân phép quay, và cộng hai ma trận quay lại với nhau thì không còn là ma trận quay.

Góc Euler

  • Góc Euler biểu diễn ba phép quay theo các trục x, y, z.
  • Ưu điểm: Dễ hiểu và thường được dùng để định nghĩa trực tiếp phép quay.
  • Nhược điểm: Có thể gặp vấn đề gimbal lock, khi ở một số góc nhất định các trục quay trở nên song song khiến việc quay không thể thực hiện được.

Quaternion

  • Quaternion là số phức bốn chiều dùng để biểu diễn phép quay.
  • Ưu điểm: Thông qua nội suy tuyến tính cầu (slerp) cho phép chọn đường đi ngắn nhất với tốc độ không đổi.
  • Nhược điểm: Không tạo thành không gian vectơ, khó hiểu và chi phí tính toán cao.

Phép quay trục/góc

  • Phép quay trục/góc được biểu diễn bằng trục quay và góc quay.
  • Ưu điểm: Tạo thành không gian vectơ nên có thể cộng, co giãn và nội suy.
  • Nhược điểm: Có thể không chọn đường đi ngắn nhất.

Ánh xạ mũ và ánh xạ log

  • Ánh xạ mũ: Chuyển các đối tượng quay khác thành ma trận quay.
  • Ánh xạ log: Chuyển ma trận quay thành các đối tượng quay khác.
  • Phép quay 2D: Trong 2D chỉ có một trục quay, và có thể dễ dàng tính ma trận quay thông qua ánh xạ mũ và ánh xạ log.
  • Phép quay 3D: Trong 3D, trục quay được tính bằng tích có hướng của các vectơ, và ma trận quay được chuyển đổi thông qua ánh xạ mũ và ánh xạ log.

Ý kiến của GN⁺

  • Tính thực tiễn: Hiểu được nhiều cách biểu diễn phép quay khác nhau sẽ rất hữu ích khi xử lý phép quay trong đồ họa 3D hoặc robot học.
  • Độ phức tạp: Các khái niệm nâng cao như quaternion có thể khó với kỹ sư mới bắt đầu, vì vậy điều quan trọng là học từng bước từ các khái niệm cơ bản.
  • Trường hợp áp dụng: Trong phát triển game, hoạt hình, robot học,... việc lựa chọn cách biểu diễn phép quay có ảnh hưởng lớn đến hiệu năng và độ chính xác.
  • Tiến bộ công nghệ: Các engine đồ họa hoặc engine vật lý hiện đại đang triển khai hiệu quả những cách biểu diễn phép quay này, vì vậy nên tận dụng chúng.
  • Tài liệu học tập: Tham khảo các tài liệu giáo dục chất lượng cao như bài giảng CMU 15-462 sẽ giúp hiểu sâu hơn.

1 bình luận

 
GN⁺ 2024-06-16
Ý kiến trên Hacker News
  • Mối tương ứng giữa nhóm Lie và đại số Lie rất hữu ích, vì nó cho phép chuyển những khái niệm trừu tượng như phép quay 3D sang hệ tọa độ. Điều này giúp kỹ sư giải quyết vấn đề rất nhiều.
  • Sau một tuần làm việc dài, việc dùng thanh trượt để xoay con bò khiến đầu óc thấy thư thái.
  • Tôi thấy quaternion kém trực quan hơn ma trận. Ma trận tác động lên vector, và phép quay cũng tác động lên vector, nên ma trận tự nhiên hơn.
  • Một trong những điều hay nhất tôi học ở đại học là cách đưa ma trận quay vào trạng thái của bộ lọc Kalman. Nhờ đó có thể ước lượng phép quay mà không phải lo về gimbal lock.
  • Bài blog rất hay. Sau khi xem hồ sơ của tác giả, tôi cảm thấy mình còn kém cỏi.
  • Không chỉ phần xoay con bò, mà cả cách tính ma trận quay tiêu chuẩn cũng hữu ích. Khi xoay hàng triệu vector, có thể dùng pipeline nhân ma trận được tối ưu hóa.
  • Tôi đã tìm cách lấy trung bình nhiều phép quay, và cách này có vẻ dễ hơn.
  • Tôi nhận ra rằng việc tạo ra các phép trừu tượng trong toán học khá giống với việc tạo ra các phép trừu tượng trong kỹ thuật phần mềm. Nhờ vậy việc tính toán trở nên dễ hơn.
  • Thật tiếc khi nhiều phần mềm 3D không dùng giao diện Arcball. Arcball có thể thực hiện mọi phép quay chỉ với một lần kéo và không bị gimbal lock.
  • Quaternion đơn vị là một nhóm Lie, và mọi quaternion đều biểu diễn tốc độ quay. Nếu muốn hiểu quaternion, nên đọc về đại số hình học.