一维线段
考虑线段[x1,x2]和[x3,x4]。有如下两种情况:
- 两条线段不相交(包括刚好端点相连):此时靠左的右端点≤靠右的左端点。
- 两条线段相交(包括完全包含):此时靠右的左端点到靠左的右端点即为相交的部分。
综上得:rx1=max(x1,x3) , rx2=min(x2,x3)
不相交 & ~if~ rx_{1} ~>~ rx_{2} \\ [rx_{1}, rx_{2}] & ~if~ rx_{1} ~\leq~ rx_{2}
\end{cases}$$
# 二维矩形
---
设两个矩形的左下角顶点分别为$(x_{1}, y_{1})$,$(x_{3}, y_{3})$,右上角顶点分别为$(x_{2}, y_{2})$,$(x_{4}, y_{4})$。
将x和y分别看成一维的,分别求出$rx_{1}, ry_{1}, rx_{2}, ry_{2}$,当两个维度分别满足相交条件时,相交区域为左下角顶点$(rx_{1}, ry_{1})$和右上角顶点$(rx_{2}, ry_{2})$。
综上得:$rx_{1} = max(x_{1}, x_{3}) ~,~ ry_{1} = max(y_{1}, y_{3}) ~,~ rx_{2} = min(x_{2}, x_{3}) ~,~ rt_{2} = min(y_{2}, x_{4})$
$$\begin{cases}
不相交 & ~if~ other \\ [(rx_{1}, ry_{1}), (rx_{2}, ry_{2})] & ~if~ rx_{1} ~\leq~ rx_{2} \text{ and } ry_{1} ~\leq~ ry_{2}
\end{cases}$$