【纯技术】高效率检测多边形相交解决方案
【纯技术】高效率检测多边形相交检测平面上 2个多边形是否相交,不关心包含,只关心交叉..C/C++ code#define N
【纯技术】高效率检测多边形相交
检测平面上 2个多边形是否相交,不关心包含,只关心交叉..
C/C++ code#define NUM_A 11#define NUM_B 17//多边形的顶点坐标 依次向后连接int A[NUM_A][2] = {..}; int B[NUM_B][2] = {..};bool GetCollision(const int a[NUM_A][], const int b[NUM_B][]){ //实现 return true;}
我目前的方法是:
先对坐标数组排序,算出2个多边形的最大距离MaxLenA MaxLenB【只可能是垂直距离或水平距离】
MaxLen做为直径 把2个多边形粗略的作为2个圆
若圆之间距离 > (MaxLenA + MaxLenB)/2 则不可能相交
否则可能相交 进行精确计算: 依次判断线段相交..
问题来了: 若2个多边形是运动的,1个很快,如子弹 1个不快,如人
知道初始位置,运动方向,速度 按照时间判断相交会有穿越现象。
如何检测,难道不是按照时间检测吗?
求更好更高效率的方案..
[解决办法]先占位再读题
[解决办法]你的第一种就解法就精确 应该说不对吧 只能算出大致界限 不能确定 没什么用
第二个 如果是运动的 就不按找时间算 应该按轨迹算 算出轨迹 求出轨迹相交点 然后算时间 是否相等
[解决办法]同意楼上
[解决办法]呵呵。偶也先,Mark一下。