|
|
我做一个D3D的练习时,发现这样一个问题,想很久也没想明白:
//绕Y轴侧身旋转角度
sideangle += 0.02f;
if (sideangle >= 0.7854f)//如果大于等于45度
sideangle = 0.7854f;
//绕Z轴平转角度
angle += 0.02f;
if (angle >= 6.2832f)//如果大于等于360度
angle = 0.0f;
D3DXMATRIX World,ySideRot,zFlateRot;
D3DXMatrixIdentity(&World);
D3DXMatrixRotationY(&ySideRot,sideangle);
D3DXMatrixRotationZ(&zFlateMov,angle);
World = World * ySideRot * zFlateRot;//先绕Y轴,再绕Z轴?
Device->SetTransform(D3DTS_WORLD,&World);//设置世界坐标矩阵
如果按照上面倒数第二条代码中的顺序变换矩阵,物体同时绕Y轴和Z轴旋转,它的Z轴方向垂直屏幕向里,而当我把顺序改为:
World = World * zFlateRot * ySideRot ;//先绕Z轴,再绕Y轴?
物体也同时绕Y轴和Z轴旋转,但当绕Y轴旋转到固定值后,它的Z轴方向与垂直屏幕方向有一个角度,它将一直绕这条倾斜的Z轴旋转。这是为什么? |
|