Java 在XYZ旋转后计算对象XYZ方向
我在XYZ中以90度的步长旋转3D空间中的对象(rX rY rZ)。角度限制为0-360度,我使用以下命令旋转矩阵:Java 在XYZ旋转后计算对象XYZ方向,java,opengl-es,3d,rotation,geometry,Java,Opengl Es,3d,Rotation,Geometry,我在XYZ中以90度的步长旋转3D空间中的对象(rX rY rZ)。角度限制为0-360度,我使用以下命令旋转矩阵: Matrix.rotateM(mModelMatrix, 0, rX, 1.0f, 0.0f, 0.0f); Matrix.rotateM(mModelMatrix, 0, rY, 0.0f, 1.0f, 0.0f); Matrix.rotateM(mModelMatrix, 0, rZ, 0.0f, 0.0f, 1.0f); 如果旋转前对象的XYZ为右(X+)、远(Y+)和向
Matrix.rotateM(mModelMatrix, 0, rX, 1.0f, 0.0f, 0.0f);
Matrix.rotateM(mModelMatrix, 0, rY, 0.0f, 1.0f, 0.0f);
Matrix.rotateM(mModelMatrix, 0, rZ, 0.0f, 0.0f, 1.0f);
如果旋转前对象的XYZ为右(X+)、远(Y+)和向上(Z+);在任意旋转后,如何轻松计算什么是右、远和向上
我没有其他信息,只有rX、rY和rZ旋转变量。当有一个矩阵时,最好将基向量与相同的矩阵相乘,以获得变换向量。例如,如果要查找从对象朝向(0,0,1)其内部坐标系的向量,则首先使用此矩阵变换原点(0,0,0)以获得新的中心,然后使用相同的步骤变换目标向量(0,0,1)。结果是
目标原点
。此过程适用于任何系统和您需要的任何组合,但您确实需要注意与哪个矩阵相乘,因为在大多数情况下不应包括投影
对于您的特定情况,另一个有趣的解决方案可能只是查看矩阵基向量。矩阵左上角的3x3部分实际上代表了
x
、y
和z
的3个轴。所以恒等式是x=(1,0,0)
,y=(0,1,0)
,z=(0,0,1)
。旋转或缩放后,这些值将发生变化,可以直接从矩阵中访问。使用相同的旋转旋转不同的3D单位向量。然后查找结果。有趣且简单的方法,谢谢!谢谢,你上一次对矩阵中3x3部分的建议成功了!我做了一些简单的测试,比如:if(mRotationMatrix[0]+mRotationMatrix[1]+mRotationMatrix[2]