Хорошо, поэтому я пытаюсь получить угол двух кватернионов, и он почти работает идеально, но затем он прыгает с
evec angle: 237.44999653311922
evec angle: 119.60001380112993
, и я не могу понять, почему для жизнимне.(Примечание: evec
было старым именем переменной, которое только что осталось в распечатке)
В любом случае, вот мой код:
FloatBuffer fb = BufferUtils.createFloatBuffer(16);
// get the current modelview matrix
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, fb);
Matrix4f mvm = new Matrix4f();
mvm.load(fb);
Quaternion qmv2 = new Quaternion();
Matrix4f imvm = new Matrix4f();
Matrix4f.invert(mvm, imvm);
qmv2.setFromMatrix(imvm);
qmv2.normalise();
Matrix3f nil = new Matrix3f();
nil.setIdentity();
Quaternion qnil = new Quaternion();
qnil.setFromMatrix(nil);
qnil.normalise();
float radAngle = (float)(2.0 * Math.acos(Quaternion.dot(qmv2, qnil)));
System.out.println("evec angle: " + Math.toDegrees(radAngle));
Как мне сделать так, чтобы он прекратил переход с 237 на 119и продолжать идти на все 360?