2011-06-10 122 views

回答

7

弧碰撞是稍硬再进行正常的碰撞,但使用布尔代数,你可以很容易地检查给定的点是否在你的弧内。

看看下面的图片。

这里有3个物品。黑色的球体,可以看到你的弧线,如果碰到它,它可能在你的弧线内。红色球体位于黑色球体的顶部,它将弧形的“内部”可视化,如果红色球体内有某物,它肯定不在弧的“内部”。现在还有一个绿色三角形,可视化弧的“截止点”,绿色三角形内的任何东西也绝对不在弧线内。

测试黑球内部是否容易。 (物体到球体中心的距离< =球体半径)。红色球体相同。绿色三角形有点棘手,你首先必须构造这个。找到弧的起点和终点弧度。并通过起始弧度旋转单位矢量。然后通过末端弧度旋转单位矢量。将这两个向量延长2 *黑球半径。现在使用弧的中心点和两个向量的位置作为三角形的三点加上中心位置。然后,您可以使用点三角形碰撞求解器之一:http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web

所以请记住:碰撞弧=(碰撞黑色球体)& &(碰撞与红球)& &(碰撞绿色三角形)!。

ARC Collision

+0

非常感谢,我会努力实现这个在Android和告诉你我会发生什么。 – ibmkhd 2011-06-11 09:19:17

+0

对于我的情况,我用矩形代替三角形,因为曲线恰好是一个半圆,这对我来说很好,感谢您的帮助 – ibmkhd 2011-06-12 07:04:18

+0

这是一个Android问题,但概念在所有语言中都是相同的。这帮助了我的JS Canvas。 +1 – 2016-01-21 15:46:15