2017-10-12 80 views
0

我有一个存储为两个基点的矩形列表等[[5,10],[10,15]],我知道它们都与从一点到另一点的线相交。如何找到哪个矩形首先与一条线相交?哪个矩形线首先点击

+0

线条起点'x'坐标与下'x'坐标之间的绝对差值最小的那个。 – Kasramvd

+1

种类,但如果线条向后或向上怎么办 –

+0

这一切都取决于您首先指的是什么以及坐标系的中心是什么,除了线条没有方向。此外,如果两个矩形的差别相同,例如垂直排列矩形并垂直排列,则可以检查“y”之间的差异。 – Kasramvd

回答

1

线(两点定义)具有参数方程

X = X0 + t * (X1 - X0) 
Y = Y0 + t * (Y1 - Y0) 

替代左或右(视线方向)的矩形边缘坐标的第一方程,顶或右坐标中 - 在第二个等式,找到提供与边缘相交的参数t的最小值。

例如,从第一个等式得到矩形左边缘的tl值。查找Y为这个tl从第二个方程的值,并检查这个Y是否在top..bottom范围内。

您是否有关于矩形位置和大小的其他限制/信息?矩形是否设置为常量,并使用多行?或者线是不变的,并且有一些矩形?

+0

即将写。请注意,如果'X1 - X0'或'Y1 - Y0'为零或非常接近零(垂直和水平线),则需要小心。除此之外,我认为如果矩形不重叠,那么最靠近第一个点的角落就是赢家,但我不完全确定。虽然这些是轴对齐的矩形,但找到交点可能会更快。 – jdehesa