2009-10-09 23:57
所谓追踪,相对于另外一个角色来说是逃跑,首先需要做出追和逃跑的决策判断。
1.坐标追踪 也是最基本追逐方式,他根据要追踪对象的坐标来修改追踪者的坐标,使两者的距离逐渐缩短。 一个简单的例子: Point m_pPrey; /// 被追踪者 Point m_pAtta; /// 追踪者 对于追踪者来说: 新位置 = 旧位置 + XY速度 ; 1if( m_pAtta.x < m_pPrey.x )
2 m_pAtta.x ++; 3else if( m_pAtta.x > m_pPrey.x ) 4 m_pAtta.x --; 5 6 7if( m_pAtta.y < m_pPrey.y ) 8 m_pAtta.y ++; 9else if( m_pAtta.y > m_pPrey.y ) 10 m_pAtta.y --; 追踪者X 方向速度 / 追踪者Y 方向速度 = c 向量x 轴分量/ c 向量y 轴分量 .即可求解。
3.拦截追踪 所谓拦截追踪,如果考虑的是被追逐的目标太远,如果2者速度一样,或者相差不大,有可能很难追上,玩过实况足球的都知道,如果采用上面的2中追逐方式,可能错过最佳的防守位置。下面是拦截追踪的一个示例图: 对于追踪者来说,他只需要知道被追踪者的位置,方向与速度,讲会计算一个最佳的拦截位置。然后你会发现这只是一个简单的追踪问题。且需要的时间t最少。 整个3种追踪的源码代码 以及 demo都共享: /Files/expter/chase.rar 下一篇通过实例demo来记录学习的聚类算法: (#)
|
|