Y-Ekseni ile ilgili dörtlü kullanarak bir nesneyi 45 derece döndürmeye çalışıyorum. Quaternion'u Belirttikten Sonra Rotasyon Matrisini almaya çalışıyorum. Ama bakın değerler hatalıQuaternion to Rotation Matrix, Eigen Kitaplığı'nı kullanarak yanlış değerler
Eigen::Quaterniond q;
q.x() = 0;
q.y() = 1;
q.z() = 0;
q.w() = PI/8; // Half of the rotation angle must be specified, even IDK why
Eigen::Matrix3d R = q.normalized().toRotationMatrix();
std::cout << "R=" << std::endl << R << std::endl;
ÇIKIŞ:
R=
-0.732 -0 -0.680
0 1 -0
0.680 0 -0.732
Y-ekseni boyunca OpenGL Rotasyon Matris olmalıdır beri:
Dolayısıyla benim beklenen çıktı şu olmalıdır:
R=
0.707 0 0.707
0 1 0
-0.707 0 0.707
Değerlerin yalnızca küçük bir yüzde değeriyle yanlış değerler üzerindeki değerleri de beklenmedik dönüşlere neden oluyor. Negatif işaretlerden dolayı küpüm 180 derecelik dönüş artı belirtilen açı yapıyor. Bütün gün boyunca kafamı kırdım. Birisi bana neyi yanlış yaptığımı söyleyebilir mi?
45 derece pi/4 ' – Rostislav
Ben quaternions hakkında bodur bilmiyorum, ama o/8 biliyoruz 'dır 22.5 ° 'ye karşılık gelir. 45 °/4. – Logicrat
@Logicrat Neden olduğunu bilmiyorum, ama açıyı belirtmelisin. Yani 'PI/4' ile döndürmek zorunda kalırsam, bunu 'PI/8' –