剑轩

圆形和矩形碰撞检测

电脑版发表于:2016/10/11 16:52


已知:
矩形:具体4个点坐标A,B,C,D
圆形:半径与圆心


判断碰撞方法:

1.将矩形ABCD,上下左右4个方向均扩充R的长度,形成新的两个矩形,如果此两个矩形包含圆心坐标则发生碰撞.


2.如果条件1不成立,仍然有机会发生碰撞,此时发生碰撞的可能存在于矩形ABCD的4个顶点处有可能碰撞,

此时检测根据圆和距离它最近的一个矩形顶点的点到点之间的距离是否小于等于R,如果是则发生碰撞.



其他算法思路


判断三种情况。

1. 矩形四个顶点在圆内

2. 判断圆的内接正方形与矩形是否碰撞

3. 判断圆上的水平左右、竖直上下四个点是否在矩形内


其中1比较简单,只需比较点到圆心距离与圆半径即可。3也简单,判断点是否在矩形内的思想是,若点在矩形内,则任意选定矩形四个顶点中的一个与该点连线,其他3点必不同时在连线同侧。
2有点难度,分别判断矩形的四个顶点是否在正方形内以及正方形的四个顶点是否在矩形内。但是可能存在下面这种情况。

如果是这种情况的话,矩形的四个顶点必有至少一个在圆内。所以就算在这种情况下没能检测到圆的内接正方形与矩形碰撞,但会在情况1会检测出来。 因此只要通过上述三种碰撞检测,就能保证没有漏掉任何情况。



关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢