4x4矩阵四个分量的几何意义,看了别人定义的,有点不解

2008-06-11
这段时间看了newton物理引擎,看了别人自定义的矩阵,使用起来和d3d的完全一样,但看了代码定义的着实有些不解
class dMatrix
{
public:
        dVector m_front;
        dVector m_up;
        dVector m_right;
        dVector m_posit;
};
这里面的第一个分量为什么取名字叫front(前)而第三个分量是right(右)呢
第2个是up(上)很好理解,没有问题,第四个是position(位移)也好理解
恰恰就是第一个和第三个分量,感觉名字反了,有点不明白。

反思了一阵子,矩阵的前三个分量应该代表的是空间的三个延展方向,也就是三个轴向量
其实看看单位矩阵
1,0,0,0
0,1,0,0
0,0,1,0
0,0,0,1
就知道分别代表的是正x轴,正y轴和正z轴,那么世界的单位矩阵应该是left, up ,front构成的啊

再看看绕y轴a角度的矩阵定义:
cos(a), 0, -sin(a), 0
     0, 1,       0, 0
sin(a), 0,  cos(a), 0
     0, 0,       0, 1

前三行向量是绕y轴旋转以后的新的三个轴,代表的是新的空间 x' y' z'轴的伸展方向

想了很久,终于想明白了4x4矩阵的前三个向量分别代表着新的齐次空间三轴x'y'z'轴相对于原来空间的延展方向,最后一个分量是新的位移,这样矩阵的几何意义非常清楚了。
我查了很多资料,对于4x4矩阵前三个向量的含义,基本上所有的资料都没有提,但我想我的理解应该没有问题,不然作者命名分量就不会取那么有“意义”的名字了。

可是newton的作者为什么偏偏第一个分量叫做front而第三个分量叫做right就有点不理解了,我觉得应该反过来,第一个分量叫right第三个分量叫front才对

除非他的坐标系x表示深度,z表示左右,可事实上我也试过了,并非入此,他的16个float和d3d的完全一致。

感觉很奇怪,是我的理解错误,还是作者的一个小小的命名上的失误呢?



最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多
类魂游戏设计专题
推广
【爆款新游】【潜力佳作】分析系列
推广