圆与扇形物体的碰撞检测
扇形物体包括一个圆心和两个端点,两个端点在扇形物体的弧上。可以用三点+半径来表示一个扇形,或者也可以用三点来表示一个扇形。
要对圆与扇形物体做碰撞检测,先来分析圆与扇形物体的位置关系。
圆心可能的位置有两种:
在扇形物体的扇面朝向的方位
不在扇形物体的扇面朝向的方位
这两种情况的判断方法是有区别的。
对于第一种情况,直接根据圆与圆的碰撞检测算法就可以判断圆与扇形物体是否发生了碰撞。
对于第二种情况,要计算出圆心到扇形物体两条边长的最短距离。取二者的最小值$D^2$,再将该值与圆的半径的平方做比较,如果 $R^2$> $D^2$,说明圆与扇形物体不相交,否则存在交点。
判断圆心是否在扇形朝向的方位可以使用向量外积的计算公式来判断。假设扇形两条边的向量分别为A和B,扇形圆心到圆心的方向为向量P,A x P 与 P x B 同方向,并且与A x B同方向则说明圆心被包含在内,否则就说明圆心不被包含在内。
下图是验证该套理论的图示