(Jawaban ini pada dasarnya sama dengan Stefan, tetapi saya ingin menambahkan beberapa detail tentang vektor baris dan kolom, dan cara menentukan yang Anda gunakan.)
Ya, ini mungkin, tetapi detailnya bergantung pada apakah Anda mewakili vektor Anda sebagai baris atau kolom.
Vektor kolom
Jika Anda menggunakan vektor kolom , Anda biasanya akan mengubahnya dengan meninggalkan -multiplikasi matriks Anda:
vector = mRotateZ * vector;
vector = mRotateX * vector;
Tentu saja, Anda juga dapat melakukan ini dalam satu langkah:
vector = mRotateX * mRotateZ * vector;
Tetapi perkalian matriks adalah asosiatif, yang berarti tidak masalah perkalian mana yang dilakukan terlebih dahulu:
A * B * C = (A * B) * C = A * (B * C)
Jadi kita bisa menulis
Matrix mRotate = mRotateX * mRotateZ;
vector = mRotate * vector;
Kami sekarang telah membuat matriks tunggal, yang setara dengan putaran pertamaZ
dan kedua tentang X
. Ini secara umum sepele untuk sejumlah transformasi. Perhatikan bahwa transformasi diterapkan dari kanan ke kiri.
Vektor baris
Jika, di sisi lain, Anda menggunakan vektor baris , Anda biasanya akan ke kanan -multiply matriks Anda:
vector = vector * mRotateZ;
vector = vector * mRotateX;
Sekali lagi, menulisnya dalam satu langkah, kita dapatkan
vector = vector * mRotateZ * mRotateX;
yang dapat ditulis ulang sebagai
Matrix mRotate = mRotateZ * mRotateX;
vector = vector * mRotate;
Perhatikan bahwa dalam kasus ini, transformasi diterapkan dari kiri ke kanan.
Ya, cukup gandakan dengan urutan terbalik:
EDIT. Jawaban saya hanya berlaku jika Anda menggunakan vektor kolom. Silakan lihat jawaban terperinci Martin Büttner.
sumber
Dari matematika:
Apa artinya ini (pada dasarnya) adalah:
Berpikir tentang itu. Mulai dari ruang objek, Anda dapat memutar objek ke orientasi apa pun hanya menggunakan satu putaran.
Saya ingin menunjukkan bahwa memasukkan angka empat bukan hanya matematika acak. Berbeda dengan jawaban lain, pendekatan yang disukai dalam grafis sebenarnya untuk mewakili rotasi sebagai angka empat, karena mereka mengambil lebih sedikit ruang dan lebih cepat untuk digabungkan.
Ada cara mudah Googleable untuk mengkonversi antara matriks rotasi dan angka empat, tergantung yang Anda inginkan. Intinya adalah rotasi adalah angka empat dalam arti matematika, jadi kombinasi keduanya juga merupakan rotasi tunggal.
sumber