Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在XYZ旋转后计算对象XYZ方向_Java_Opengl Es_3d_Rotation_Geometry - Fatal编程技术网

Java 在XYZ旋转后计算对象XYZ方向

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+)和向

我在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+)和向上(Z+);在任意旋转后,如何轻松计算什么是右、远和向上


我没有其他信息,只有rXrYrZ旋转变量。

当有一个矩阵时,最好将基向量与相同的矩阵相乘,以获得变换向量。例如,如果要查找从对象朝向(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]