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

时间:2016-02-29 20:23:46

标签: java opengl-es 3d rotation geometry

我在XYZ中以3D度旋转一个物体90度(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 +);如何在任意轮换后轻松计算出正确,离开和向上的内容?

我没有其他信息,只有 rX rY rZ 轮换变量。

1 个答案:

答案 0 :(得分:1)

当具有矩阵时,将基矢量与相同矩阵相乘以获得变换矢量可能是最有意义的。例如,如果你正在寻找一个面向物体朝向(0,0,1)的矢量来尊重它的内部坐标系,你首先用这个矩阵变换原点(0,0,0)来得到新的中心,然后变换目标矢量(0,0,1)具有相同的程序。结果是target-origin。此过程适用于您需要的任何系统和任何组合,但您需要注意与之相乘的矩阵,因为在大多数情况下不应包含投影。

针对您的特定情况的另一个有趣的解决方案可能只是查看矩阵基矢量。矩阵的左上角3x3部分实际上代表xyz的3轴。因此,身份是x=(1,0,0)y=(0,1,0)z=(0,0,1)。旋转或缩放后,这些值将发生变化,可以直接从矩阵中访问。