在加工过程中,如何在applyMatrix之后找到新的x、y、z?

在加工过程中,如何在applyMatrix之后找到新的x、y、z?,matrix,3d,processing,Matrix,3d,Processing,我有一个带有关节的模型,各个形状可以旋转。模型将被转换到中心。使用applyMatrix()应用的矩阵是基于四元数值的旋转矩阵,因此它可以在没有万向节锁的情况下旋转 但是我想围绕一个关节点平移和旋转,这个关节点使用模型的偏移量,所以我可以找到那个点,因为它只是model.x/y/z+offset.x/y/z。但是,这并没有考虑来自applyMatrix()的旋转,但我希望能够计算关节点(x,y,z)在任何旋转方向的位置 translate(宽度/2,高度/2,0); applyMatrix(m[

我有一个带有关节的模型,各个形状可以旋转。模型将被转换到中心。使用
applyMatrix()
应用的矩阵是基于四元数值的旋转矩阵,因此它可以在没有万向节锁的情况下旋转

但是我想围绕一个关节点平移和旋转,这个关节点使用模型的偏移量,所以我可以找到那个点,因为它只是
model.x/y/z+offset.x/y/z
。但是,这并没有考虑来自
applyMatrix()
的旋转,但我希望能够计算关节点
(x,y,z)
在任何旋转方向的位置

translate(宽度/2,高度/2,0);
applyMatrix(m[1][1],m[1][2],m[1][0],0,
m[2][1],m[2][2],m[2][0],0,
m[0][1],m[0][2],m[0][0],0,
0,0,0,1);
pushMatrix();
//围绕此关节点旋转
翻译(offsetX、offsetY、offsetZ);
// !!!!
//这里新的x,y,z是什么??
// !!!!
轮换(amt);
翻译(-offsetX,-offsetY,-offsetZ);
形状(组件)
popMatrix();

查看的坐标部分


具体来说,听起来您正在寻找
screenX()
screenY()
函数。或者,您可以使用
modelX()
modelY()
函数以另一种方式将屏幕坐标转换为模型坐标。

wow,它的一些内置函数让我感到惊讶。modelX/Y/Z函数实现了这一点。是否还有一种方法可以在函数调用之间的特定点获得旋转矩阵以进行平移和旋转。基本上,它只会在某一点获得旋转,避免平移,因此相同的旋转可以应用于另一个对象。@karamazovbros我不知道,反正也不是现成的。我可能会用trig来做类似的事情。