4
好了,所以我试图让两个四元数的角度,它几乎完美的作品,但随后从问题获得两个四元数的角度
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?
我现在对四元数学并不完全新鲜,但事实上,你得到的角度大于180°会让我感到腥味 - 并且表明逻辑中出现了问题。两个矢量之间没有超过180°的角度。 – Daniel 2012-02-06 01:35:16