如何检查线段是否与矩形相交?

ome*_*ega 29 language-agnostic algorithm geometry computational-geometry

如果你有2个点,(x1,y1)和(x2,y2),它们代表一个矩形的两个相对的角,还有另外两个点,(x3,y3)和(x4,y4),它们代表a的2个端点线段,如何检查线段是否与矩形相交?

(线段只是给定端点之间包含的段.它不是由这两个点定义的无限长度线.)

tem*_*def 28

一个非常简单的选择是使用标准算法来检查两个线段是否相交以检查线段是否与构成盒子角落的四个线段中的任何一个相交.检查两个线段是否相交在计算上非常有效,所以我希望这可以非常快地运行.

希望这可以帮助!

  • 有一种情况不是由@templatetypedef给出的想法处理的:线段的两个端点在矩形内部的情况.但这种情况很容易检查:`x1 <x3 && x3 <x2 && y1 <y3 && y3 <y2`. (25认同)
  • @MarkPing:这取决于您是否将矩形视为原样,或仅考虑其边界. (3认同)