Transform.transform(float[] vectors)的物理意义
在碰撞检测时,首先我们要获得物体在World中的位置,所以要首先获得World中的Transform对象
在M3G中,Transform是由一个4x4的float[]数组组成的,排列方式如下
m11, m12, m12, tx
m21, m22, m23, ty
m31, m32, m33, tz
0 , 0 , 0 , 1
m21, m22, m23, ty
m31, m32, m33, tz
0 , 0 , 0 , 1
---------------------------------------------------------------------------------------
(昨天没写完,今天接着)
---------------------------------------------------------------------------------------
如果我要想办法获得[tx, ty, tz],那么就需要对这个矩阵进行一定的变换
算了,我不说我遇到的弯路了,直接写最终方法好了
float[] v = {0, 0, 0, 1};
trans.transform(v);
trans是这个物体在world中的transform,在执行完trans.transform(v)之后
v的值变为{tx,ty,tz,1}
原因:
v被当作一个4*1的向量,右乘以这个矩阵
(我开始时把v当作一个1*4的向量去左乘矩阵了,所以根本解释不通。。)
要注意,M3G里面和OpenGL都是一样,都是列向量
所以,这个函数的物理意义就是把这些向量用Transform这个矩阵进行变换,得到变换后的坐标