Yang singkat di sini: sebagian besar pengembang game tahu untuk menghindari penggunaan rotasi Euler untuk hampir semua hal yang Anda tidak ingin terbakar dalam tumpukan berputar yang buruk.

Namun jika Anda menghitung rotasi diskrit pada sumbu individual untuk robotika, jangan coba ini (psuedocode):

Quaternion q = Quaterion(dariNormalizedDir, keNormalizedDir);

panci apung, gulung, miring = q.ToEuler();

Butuh beberapa saat bagi saya untuk mengetahuinya, tetapi angka empat transformasi apa pun yang Anda buat akan memiliki rotasi x, y, dan z yang terpasang di dalamnya meskipun rotasinya terutama dalam satu sumbu. Quat akan memberikan transformasi yang benar antara dua arah tetapi tidak dalam urutan sumbu yang berguna.

Solusi saya

Selesaikan setiap sumbu dalam 2 dimensi.