2014-02-27 54 views
1

我目前正在開發一個數學物理學程序,我需要計算兩個矢量是否彼此重疊,一個是垂直而另一個是水平。有沒有什麼快速的算法來做到這一點,因爲我到目前爲止,有很多重複。例如,假設我們有矢量V1((0,1),(2,1))V2((1,0),(1,2)),其中第一個括號是開始的座標和矢量到達的第二個座標。我想作爲一個結果,採取他們在(1,1)檢測矢量之間重疊的算法

重疊到目前爲止,我想出了唯一的想法是「每個向量」擴大'以點的列表,然後比較列表 例如,對於V1其名單將是(0,1) (1,1) (2,1)

回答

0

是這樣的嗎? (V1總是水平向量,座標是有序的,即V1.x0 < V1.x1和V2.y0 < 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