不是太明白, 我觉得最好用矩阵, 供参考:
bool RotateObj(vgObject *pObj, const float dh, const float dp, const float dr)
{
if(pObj== NULL)
return false;
vgMat mat;
vgMatStack *matStack;
:
:
matStack = vgNewMatStack();
:
:
vgGetPos( Obj, pos );
float x0,y0,z0,h0,p0,r0;
vgGetPosVec( pos, &x0, &y0, &z0, &h0, &p0, &r0 );
vgGetPosMat( pos, mat );
vgLoadMat( matStack, mat );
vgRotMat(matStack,h0 + dh,'z');
vgRotMat(matStack,p0 + dp,'x');
vgRotMat(matStack,r0 + dr,'y');
vgGetMat( matStack, mat );
vgPosMat( pos, mat );
vgPos( Obj, pos );
return true;
} |