补题:比赛时做得比较麻烦,逛讨论区时发现了个很简洁的做法
怎样判断平面上一个矩形和一个圆形是否有重叠? - Milo Yip的回答 - 知乎
https://www.zhihu.com/question/24251545/answer/27184960
https://leetcode-cn.com/problems/circle-and-rectangle-overlapping/solution/circle-and-rectangle-overlapping-by-ikaruga/
思路
-
计算矩形的中心点 (x0, y0)
-
计算矩形的中心点到圆点的向量 p
2.1. 通过绝对值,将圆形转移至第一象限
2.2. 在哪个象限并不重要,他们之间是相对关系 -
计算矩形的中心点到矩形右上角的向量 q
-
通过 p - q 得到从矩形右上角到圆点的向量 u
4.1. 将分量为负数设置为 0
4.2. 分量为负,说明可以找到更短的距离,设置为 0 相当于做垂线
4.3. 当 x 和 y 都为负,说明圆点在矩形内 -
比较 u 和圆形半径 radius 的长度