Câu trả lời:
(Câu trả lời này về cơ bản giống như của Stefan nhưng tôi muốn thêm một số chi tiết về vectơ hàng và cột và cách xác định bạn đang sử dụng cái nào.)
Vâng, điều này là có thể, nhưng các chi tiết phụ thuộc vào việc bạn biểu diễn các vectơ của mình dưới dạng hàng hay cột.
Nếu bạn đang sử dụng các vectơ cột , thông thường bạn sẽ biến đổi chúng bằng cách sử dụng trái các ma trận của bạn:
vector = mRotateZ * vector;
vector = mRotateX * vector;
Tất nhiên, bạn cũng có thể làm điều này trong một bước:
vector = mRotateX * mRotateZ * vector;
Nhưng phép nhân ma trận là kết hợp, điều đó có nghĩa là việc nhân nào được thực hiện trước tiên:
A * B * C = (A * B) * C = A * (B * C)
Vì vậy chúng tôi có thể viết
Matrix mRotate = mRotateX * mRotateZ;
vector = mRotate * vector;
Bây giờ chúng tôi đã tạo ra một ma trận duy nhất, tương đương với xoay vòng đầu tiênZ
và thứ hai về X
. Điều này khái quát tầm thường cho bất kỳ số lượng chuyển đổi. Lưu ý rằng các phép biến đổi được áp dụng từ phải sang trái.
Mặt khác, nếu bạn đang sử dụng các vectơ hàng , thông thường bạn sẽ đúng -multiply ma trận của bạn:
vector = vector * mRotateZ;
vector = vector * mRotateX;
Một lần nữa, viết nó trong một bước, chúng ta nhận được
vector = vector * mRotateZ * mRotateX;
có thể được viết lại thành
Matrix mRotate = mRotateZ * mRotateX;
vector = vector * mRotate;
Lưu ý rằng trong trường hợp này, các phép biến đổi được áp dụng từ trái sang phải.
Có, chỉ cần nhân chúng theo thứ tự ngược lại:
Matrix myrotation = Matrix.CreateRotationX(xrot) * Matrix.CreateRotationZ(zrot);
BIÊN TẬP. Câu trả lời của tôi chỉ áp dụng nếu bạn đang sử dụng vectơ cột. Xin vui lòng xem Martin Büttner câu trả lời chi tiết.
Từ toán học:
Có một phép đồng hình 2: 1 từ các bậc bốn đơn vị đến SO (3) (nhóm xoay vòng).
Điều này (về cơ bản) có nghĩa là:
Nghĩ về điều đó. Bắt đầu từ không gian đối tượng, bạn có thể xoay đối tượng của mình thành bất kỳ hướng nào chỉ bằng một vòng quay duy nhất .
Tôi muốn chỉ ra rằng việc mang các bậc bốn trong không chỉ là toán học ngẫu nhiên. Ngược lại với các câu trả lời khác, cách tiếp cận được ưa chuộng trong đồ họa thực sự là đại diện cho các phép quay như là bậc bốn, vì chúng chiếm ít không gian hơn và nhanh hơn để kết hợp.
Có nhiều cách dễ dàng để chuyển đổi giữa ma trận xoay và bậc bốn, tùy thuộc vào việc bạn thích. Vấn đề là các phép quay là các bậc bốn theo nghĩa toán học, do đó, các kết hợp của chúng cũng là các phép quay đơn.