大神们来帮帮我一个椎体跟踪模型的问题吧
本帖最后由 心灬魔 于 2014-5-10 15:12 编辑场景是这样 我有一个固定不动的雷达车,发射出一个扫描椎体,当有飞机飞入我的扫描范围的时候扫描锥一直指向飞机,现在不知道计算什么地方有错,在群里也问了好些人,由于基础比较差,不太理解他们说的。。希望大神们能讲的详细点。。。谢谢大家了
void FollowCallBack::operator()( osg::Node*node,osg::NodeVisitor* nv )
{
osg::ref_ptr<osg::MatrixTransform> _pat =
dynamic_cast<osg::MatrixTransform*>(node);
osg::PositionAttitudeTransform* animat = modelAnima->PAT;
if (!animat->getName().empty())
{
osg::Vec3d currentP = animat->getBound().center();//飞机每一帧的位置(世界坐标);
radarMt = computeWorldToLocal(nv->getNodePath()); //获得雷达的局部矩阵;
worldPoint= osg::Vec3d(0,0,0);//雷达的位置在自己的局部坐标中为(0,0,0);
currentPoint = currentP*radarMt;//将每一帧飞机的位置转换到雷达的局部坐标系中;
/*求出每一帧飞机和雷达两个点的向量;*/
double _X,_Y,_Z;
_X = worldPoint.x()-currentPoint.x();
_Y = worldPoint.y()-currentPoint.y();
_Z = worldPoint.z()-currentPoint.z();
osg::Vec3d rotateXY = osg::Vec3d(_X,_Y,0);
rotateXY.normalize();
osg::Vec3d rotateZ = osg::Vec3d(_X,_Y,_Z);
rotateZ.normalize();
osg::Quat RotationXY,RotationZ;
RotationXY.makeRotate(osg::Vec3d(1,0,0),rotateXY);
RotationZ.makeRotate(rotateXY,rotateZ);
/*将椎体每一帧都旋转到和这个向量一致;*/
osg::Matrix mat = _pat->getMatrix();
mat.makeRotate(RotationXY*RotationZ);
_pat->setMatrix(mat);
}
traverse(node,nv);
}
T_T。。。在线等回复 osg::Vec3d currentP = animat->getBound().center();
这个求出来是世界坐标吗,怎么我得到的是一个很小的数据,像是一个相对坐标
页:
[1]