쿼터니언을 구현할 때 어떤 문제가 있습니까? 나는 그들이 여전히 짐벌 자물쇠와 모든 것을 가진 오일러처럼 행동한다고 생각합니다.쿼터니언은 오일러와 같은 역할을합니다
Quaternionf rotations = makeQuaternion(new Vector3f(1, 0, 0), angles.x);
rotations.mul(makeQuaternion(new Vector3f(0, 1, 0), angles.y));
rotations.mul(makeQuaternion(new Vector3f(0, 0, 1), angles.z));
Matrix4f matrix = new Matrix4f();
matrix.translate(position);
matrix.rotate(rotations);
matrix.scale(scale);
angles
에는 오일러 각이 있습니다. 사람들은 항상 내가 그 (것)들을 전혀 사용하면 안된다고 말하지만 나는 어떻게 내가 4 원의 가치를 바꿀 것인지 전혀 모른다. 그리고 나는 Quaternionf rotations
이 맞다고 생각합니다. 예 : 각도가 0, 90, 0
인 경우 쿼터니온은 0.00, 0.707, 0.00, 0.707 (x,y,z,w)
을 포함합니다. 어느 것이 맞습니까?
그래서 문제가 어디에 있습니까? 나는이 주제에 관해서 내가 발견 한 모든 것을 읽었지만 명확하게 이해하지 못한다.
는 편집 :
private static Quaternionf makeQuaternion(Vector3f n, float a) {
float w, x, y, z;
a = a/360 * (float) Math.PI * 2;
w = (float) Math.cos(a/2);
x = (float) (n.x * Math.sin(a/2));
y = (float) (n.y * Math.sin(a/2));
z = (float) (n.z * Math.sin(a/2));
Quaternionf quaternion = new Quaternionf(x, y, z, w);
return quaternion;
}
* "쿼터니언을 구현하는 데 문제가 있습니까?"* * 당신이 쿼터니언을 구현하지 않았기 때문에 우리는 말할 수 없습니다. – luk2302
@ luk2302 글쎄, 그게 가장 중요한 부분이라고 생각해. 나는 당신에게'makeQuaternion' 함수를 줄 수 있지만, 내가 말했듯이 그것이 올바른 결과를 줄 것이라고 생각합니다. – Maineri
쿼터니언을 정규화하고 있습니까? –