相交 - 圆和矩形是否相交
1) 以矩形的中心作为原点,建立坐标系。
2) 通过圆到矩形的最短距离<=r来判断是否相交,几种情况
2-a) bc.x>0&bc.y>0时,圆到矩形的最短距离为|bc|,所以|bc|>r则圆和矩形没有相交
2-b) bc.x<=0&bc.y>0时,圆到矩形的最短距离为|bc.y|即|dc|,把bc.x=0就能得到dc向量,所以|dc|>r则圆和矩形没有相交
2-c) bc.x>0&bc.y<=0时,圆到矩形的最短距离为|bc.x|即|dc|,把bc.y=0就能得到dc向量,所以|dc|>r则圆和矩形没有相交
2-d) bc.x<=0&bc.y<=0,圆和矩形一定相交
3) 如果圆在其他象限,跟第一象限是类似的,因为矩形在四个象限中大小是完全相同的,所以我们这边可以将圆转换到第一象限来算。
//圆和矩形是否相交 public static bool IsCircleRectIntersect(Vector2 a, Vector2 b, Vector2 c, float r) { var o = (b - a) * 2; //矩形中心点 //将矩形中心点作为原点建立坐标系 a -= o; b -= o; c -= o; //将圆转换到第一象限 c.x = Mathf.Abs(c.x); c.y = Mathf.Abs(c.y); //圆心到矩形的最短距离 var bc = c - b; bc.x = Mathf.Max(bc.x, 0); bc.y = Mathf.Max(bc.y, 0); //最短距离<=r, 则和矩形相交 return bc.sqrMagnitude <= r * r; }
参考
【数学基础】玩法常用几何计算汇总 - 知乎 (zhihu.com)
Cocos Creator实现四叉树2D碰撞检测 ---(1)几何图形碰撞原理 - 知乎 (zhihu.com)
矩形、圆和直线之间的碰撞检测_计算圆形和矩形碰撞检测-CSDN博客
分类:
2d碰撞检测 / 5_圆、矩形
, 2d碰撞检测
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!