―――――――
对以下代码:
osg::Matrix T0;
// 设置矩阵的所有16个值:
T0.set(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
5, 0, 0, 1 ); // X方向移动
osg::Matrix T_S;
// 设置矩阵的所有16个值:
T_S.set(2, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
5, 0, 0, 1 ); //先平移,再缩放T_S
osg::Matrixd T;
T.makeTranslate( osg::Vec3d( 5, 0, 0));
double d;
if ( T0 == T)
{
osg::Matrixd S;
S.makeScale( osg::Vec3d( 2, 1, 1));
osg::Matrixd M= S* T;
osg::Matrixd T1= T;
T1.preMult( S);//相当于T1=S * T1
if ( M == T1 && M == T_S)
{
d= M( 3, 0);
int i;
i=1;
}
}
运行结果如下图:
在d= M( 3, 0);下一行加断点,运行能进入该断点,说明T1.preMult( S)相当于是:T1=S * T1。