|
这是osg入门教程里面的代码
//得到新的位置
osg::Vec3 newPos1 = m_vPosition + delta;
osgUtil::IntersectVisitor ivXY; //
//根据新的位置得到两条线段检测
osg::ref_ptr<osg:ineSegment> lineXY = new osg::LineSegment(newPos1,
m_vPosition);//
osg::ref_ptr<osg::LineSegment> lineZ = new osg::LineSegment(newPos1+osg::Vec3(0.0f,0.0f,10.0f),
newPos1-osg::Vec3(0.0f,0.0f,-10.0f)) ;//主要问题是这里:这是一条什么样的线段呢???
ivXY.addLineSegment(lineZ.get()) ;//添加一条线段
ivXY.addLineSegment(lineXY.get()) ;//添加一条线段
//结构交集检测
m_pHostViewer->getSceneData()->accept(ivXY) ;//相交检测 检测两条线段相交osg大致的算法谁能简单介绍下
//如果没有碰撞检测
if(!ivXY.hits())//判断是否碰撞
{
m_vPosition += delta;
} |
|