矩形左下角点为
(
x
1
,
y
1
)
(x1, y1)
(x1,y1),右上角点为
(
x
2
,
y
2
)
(x2, y2)
(x2,y2)。
解题思路:
数学题。
圆内(包括圆边上)定义了点集:
{
(
x
,
y
)
:
(
x
−
x
c
)
2
+
(
y
−
y
c
)
2
≤
r
2
}
\{(x,y):(x-xc)^2+(y-yc)^2 \leq r^2\}
{(x,y):(x−xc)2+(y−yc)2≤r2}
矩形内(包括矩形边上)定义了点集:
{
(
x
,
y
)
:
x
1
≤
x
≤
x
2
,
y
1
≤
y
≤
y
2
}
\{(x,y):x1\leq x\leq x2,y1\leq y \leq y2\}
{(x,y):x1≤x≤x2,y1≤y≤y2}
解题思路就是求得圆心到矩形的最短距离
d
d
d,判断
d
d
d 与
r
r
r 的关系,可能出现的情况如下:
假若
x
1
≤
x
≤
x
2
x1\leq x\leq x2
x1≤x≤x2 且
y
1
≤
y
≤
y
2
y1\leq y \leq y2
y1≤y≤y2,则此时圆心在矩形内,即
d
=
0
d=0
d=0。
假若
x
1
≤
x
c
≤
x
2
x1\leq xc\leq x2
x1≤xc≤x2 或者
y
1
≤
y
c
≤
y
2
y1\leq yc \leq y2
y1≤yc≤y2,则圆心与矩形最近点的连线平行于坐标轴,则此时
d
=
min
(
∣
x
c
−
x
1
∣
,
∣
x
c
−
x
2
∣
)
d = \min(|xc - x1|,|xc-x2|)
d=min(∣xc−x1∣,∣xc−x2∣) 或者
d
=
min
(
∣
y
c
−
y
1
∣
,
∣
y
c
−
y
2
∣
)
d = \min(|yc - y1|,|yc-y2|)
d=min(∣yc−y1∣,∣yc−y2∣)。
其余情况下,其实就是求圆心到矩形四个端点的最近距离,此时:
d
=
min
(
(
x
c
−
x
1
)
2
,
(
x
c
−
x
2
)
2
)
+
min
(
(
y
c
−
y
1
)
2
,
(
y
c
−
y
2
)
2
)
d = \sqrt{\min((xc - x1)^2,(xc-x2)^2)+\min((yc - y1)^2,(yc-y2)^2)}
d=min((xc−x1)2,(xc−x2)2)+min((yc−y1)2,(yc−y2)2)