是否可以检测C中两个或多个闭合形状的碰撞?
我有char glyps(线和(或)贝塞尔曲线)
可以检测距离2的形状吗?形状之间的最小距离。
最佳答案
没有简单的方法可以进行非凸碰撞检测。大多数碰撞检测算法都在两个凸形上工作。
一种简单但效率低下的方法是将每个多边形分解为凸多边形,然后分别对着另一个凸多边形进行测试。例如,您的“ A”图形可以分为3个凸多边形,而七角星可以分解为8个。如果发生24个可能的碰撞中的任何一个,则两个原始多边形相交。
另一种方法是将保守边界区域用作第一近似。确定围绕“ A”中所有点的两个最小圆和七角星。确定圆碰撞很容易:计算圆心之间的距离,然后将其与圆半径之和进行比较。如果圆不相交,则多边形绝对不相交。如果圆确实相交,则多边形可能相交,因此需要进一步测试。
您也可以将这两种方法结合起来。在彼此测试任何凸子多边形之前,请先测试子多边形的边界圆。
关于c - 如何在C中检测碰撞两个 vector [svg]闭合形状?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39519464/