如何确定两个移动点何时彼此可见?

Dev*_*rre 6 math computational-geometry

假设我有两个点,Point1和Point2.在任何给定时间,这些点可能处于不同的位置 - 它们不一定是静态的.

Point1位于时间t的某个位置,其位置由连续函数x1(t)和y1(t)定义,给出时间t的x和y坐标.这些函数不是可微分的,它们是从线段分段构造的.

Point2是相同的,具有x2(t)和y2(t),每个函数具有相同的属性.

可能阻碍可见性的障碍是简单(和不动)多边形.

如何找到可见度的边界点?

即有两种边界:点变得可见,变得不可见.

对于成为可见的边界我,存在一些ε> 0,使得对于任何实数的,一个∈(I-ε,i)中,点1和点2是不可见的(即,连接的线段(x1(a), y1(a))(x2(a), y2(x))越过一些障碍).

对于b∈(i,i +ε),它们是可见的.

这是变得无形的另一种方式.

但我能找到一个精确的边界,如果是这样,怎么样?

aio*_*obe 1

很容易检查两条线是否相交。使用它来检查线 (p1, p2) 和每个多边形边的交点。如果有任何交叉点,则线 (p1, p2) 被某些障碍物阻挡。

如果您需要一个时间间隔(其中 p1 和 p2 不在视线范围内),您可以对不同的 t 值(最好具有相对较小的差异)以及“可见-t”和“不可见”之间进行上述检查-t" 你可以进行二分搜索,直到达到足够小的阈值,例如 eps。