获取DOF的坐标参数
程序员文章站
2024-02-18 19:52:10
...
1 pDOF->getMatrixAffine()函数取得的是DOF建立场景内部限定的参数,不随缩放比例而变化
//获取DOF的内部限定坐标
void GetAffinePositionFromDOF(const vsDOF * pDOF,double &x,double &y, double &z)
{
if(pDOF==NULL)
return ;
vuMatrixAffine<double> v;
v=pDOF->getMatrixAffine();
x=v.getTranslateX(),
y=v.getTranslateY(),
z=v.getTranslateZ();
}
2 void GetAbsolutePositionFromDOF()遍历后获取DOF的全局坐标
//获取DOF全局坐标
void GetAbsolutePositionFromDOF(const vsDOF * pDOF,double &x, double &y, double &z,double &h,double &p,double &r)
{
if(!pDOF)
return ;
vsTraversalLocate * travLocate=new vsTraversalLocate();
travLocate->setMode(vsTraversalLocate::MODE_MATRIX_STACK|vsTraversalLocate::MODE_NODE_STACK);
travLocate->visit(pDOF);
vuMatrix<double> m=travLocate->getTopMatrixStack();
m.getTranslate(&x,&y,&z);
m.getRotate(&h,&p,&r);
}