Đệ tứ là gì, và làm thế nào họ làm việc? Ngoài ra, những lợi thế nào bạn có được khi sử dụng ba điểm trên mặt phẳng 2D? Cuối cùng, khi nào nó được coi là thực hành tốt để sử dụng tứ phương?
Đệ tứ là gì, và làm thế nào họ làm việc? Ngoài ra, những lợi thế nào bạn có được khi sử dụng ba điểm trên mặt phẳng 2D? Cuối cùng, khi nào nó được coi là thực hành tốt để sử dụng tứ phương?
Câu trả lời:
Về mặt toán học, một bộ tứ là một số phức với 4 chiều. Nhưng trong phát triển trò chơi, Quancyions thường được sử dụng để mô tả một vòng quay trong không gian 3d bằng cách mã hóa:
Lưu ý rằng thông tin này được mã hóa với các sin và cosin bên trong bậc bốn, vì vậy, nói chung, bạn không nên cố gắng đặt hoặc đọc rõ ràng các thành phần bên trong của bộ tứ (xyzw). Thật dễ dàng để phạm sai lầm theo cách đó và nhận được một kết quả không có ý nghĩa. Một thư viện toán học bậc bốn thường sẽ cung cấp các hàm để hoạt động trên các bậc bốn (ví dụ: chuyển đổi chúng thành & từ các góc Euler hoặc góc trục), đảm bảo toán học chính xác và có lợi ích phụ là làm cho mã của bạn dễ đọc và dễ hiểu hơn.
Một cách khác để mô tả các phép quay là bằng cách mô tả khoảng cách xoay quanh 3 trục cố định 'x, y và z (còn gọi là góc Euler) chỉ cần 3 số thay vì 4 và thường trực quan hơn để sử dụng. Tuy nhiên, góc euler phải chịu một vấn đề gọi là khóa gimbal : Khi bạn xoay 90 ° quanh một trục, hai trục còn lại trở nên tương đương. Với tứ phương, vấn đề này không xảy ra.
Một cách khác để thể hiện các phép quay trong không gian 3d là với ma trận biến đổi 4 x 4 . Nhưng với ma trận biến đổi, bạn không chỉ xoay, mà còn chia tỷ lệ, dịch và nghiêng. Khi bạn chỉ muốn xoay vòng, một ma trận sẽ là quá mức cần thiết và một giải pháp nhanh hơn và đơn giản hơn nhiều.
Vấn đề này chỉ có liên quan trong không gian 3d. Trong không gian 2d, bạn chỉ có một trục xoay. Bất kỳ phép quay nào cũng có thể được biểu thị bằng một số dấu phẩy động đơn hoặc một số phức đơn, vì vậy bạn không gặp phải vấn đề này. Về mặt lý thuyết, bạn có thể biểu thị một phép quay trên mặt phẳng 2d với một bậc bốn trong đó trục chỉ vào (hoặc ra) mặt phẳng, nó thường là quá mức cần thiết.
Điều này là để thêm vào câu trả lời của @ Philipp.
Ngoài ra, những lợi thế nào bạn có được khi sử dụng ba điểm trên mặt phẳng 2D?
Bạn không thực sự cần tứ phân nếu tất cả những gì bạn quan tâm là xoay trên mặt phẳng, tức là về trục z. Trong trường hợp này, tất cả những gì bạn cần là góc ngáp và bạn có thể khai thác thực tế là các phép quay liên tiếp về trục z đi lại. Vì vậy, bạn có thể áp dụng luân chuyển của bạn theo bất kỳ thứ tự nào bạn muốn.
Tình huống sẽ khác nếu bạn quay trên mặt phẳng không phải là mặt phẳng XY. Xoay này tương đương với xoay quanh một trục 3D tùy ý. Bây giờ, bạn có hai lựa chọn:
xoay mặt phẳng của bạn trong 3D để nó trùng với mặt phẳng XY rồi ngáp, và biến đổi trở lại, hoặc
nghĩ về sự xoay vòng của bạn như đang ở trong 3D để bắt đầu.
Sự lựa chọn thứ hai là mã dễ dàng hơn. Như @Philipp đã nói, bộ tứ tránh khóa gimbal (nếu bạn tránh chuyển đổi RPY trung gian hoặc chuyển đổi trục / góc).
Cuối cùng, khi nào nó được coi là thực hành tốt để sử dụng tứ phương?
Bất cứ khi nào có xoay 3D, đó là cách tốt để sử dụng tứ phương.
Ví dụ: