我在二维空间中有一个正方形(宽度 = 高度)。该正方形当前由两个点定义:BottomLeft(X1,Y1) 和 TopRight(X2,Y2)。
正方形是轴对齐的,因此找到其他两个角就像 (X1, Y2) 和 (X2, Y1) 一样简单。
我也有两点——一个总是在广场里面,另一个肯定在外面。它们不一定在广场的中心——它们可以在任何地方。我也知道他们的坐标。
我需要的是找到这两个点定义的线段与正方形边之间的交点。我也想知道我与正方形的哪一侧相交。给我带来麻烦的是线对角线并靠近正方形角落的情况 - 例如,它可以与顶部或侧线相交。
蛮力法是尝试计算正方形每一边的交点并检查它是否存在。可以通过计算第二个点相对于正方形的位置并丢弃两条线来优化它(例如,如果 X 和 Y 坐标都增加,则无需检查正方形的底部和左侧)。
我想知道是否有更好/更快的解决方案来解决我的问题?我将用 Java 编写