用于检测向量之间重叠的算法



我目前正在开发一个数学物理程序,我需要计算两个向量是否相互重叠,一个是垂直的,另一个是水平的。有没有快速的算法来做到这一点,因为我到目前为止提出的,有很多重复。例如,假设我们有向量V1((0,1),(2,1))和一个V2((1,0),(1,2)),其中第一个括号是向量到达的开始坐标和第二个坐标。因此,我希望它们重叠(1,1)

到目前为止,我想出的唯一想法是将每个向量"扩展"为点列表,然后比较列表例如,对于 V1,其列表将是(0,1) (1,1) (2,1)

像这样的东西?(V1 始终是水平向量,坐标是有序的,即 V1.x0 <V2.y1):>

func intersection( V1, V2 )
    if v1.x0 <= v2.x0 and v1.x1 >= v2.x0 and
       v2.y0 <= v1.y0 and v2.y1 >= v1.y0 then
        return ( V2.x0, V1.y0 );
    else
        return NO_INTERSECTION;
    end if
end func

最新更新