使用变换矩阵旋转顶点
问题描述:
我正在尝试使用lwjgl Matrix4f类旋转顶点。我想这样的代码:使用变换矩阵旋转顶点
float rotY = (float) Math.toRadians(180);
Matrix4f transMat = new Matrix4f();
transMat.rotate(rotY, new Vector3f(0.0f, 1.0f, 0.0f));
transMat.translate(new Vector3f(1.0f, 0.0f, 0.0f));
Vector4f vecPosMod = new Vector4f(1.0f, 0.0f, 0.0f, 1.0f);
Matrix4f.transform(transMat, vecPosMod, vecPosMod);
应该旋转Vector3f(1.0f, 0.0f, 0.0f)
180度可惜所有的计算后vecPosMod是(-2.0, 0.0, 1.7484555E-7, 1.0)
。我希望它是(-1.0, 0.0, 0.0, 1.0)
。怎么样?
答
您正在旋转后沿着X轴将转换应用于矩阵。 这是执行旋转后沿X轴平移一个单位的位置,导致-2.0而不是-1.0。
试试这个:
float rotY = (float) Math.toRadians(180);
Matrix4f transMat = new Matrix4f();
transMat.rotate(rotY, new Vector3f(0.0f, 1.0f, 0.0f));
Vector4f vecPosMod = new Vector4f(1.0f, 0.0f, 0.0f, 1.0f);
Matrix4f.transform(transMat, vecPosMod, vecPosMod);
它提供了以下结果:
(-1.0 0.0 8.742278E-8 1.0)
的8.742278E-8可能是因为接近0.0,你可以得到应用在彩车的旋转变换后java的。