2011-10-12 38 views
3

需要幫助..沒有覆蓋現有形狀的繪製路徑?

我有一個組織的佈局,它們的矩形不在有序的網格中。如果它是一個網格,我會使用A-星代碼。所以,如何連接兩個節點(即兩個矩形),而不會干擾節點(矩形)。

我只想讓算法找到將繪製路徑的座標,以便我可以使用它來生成SVG文件。

回答

3

算法,我都依循矩形的邊緣

  1. 商店座標即邊緣左,右 ,頂部,底部的四個數據集。
  2. 按照從RectangleA上的點到RectangleB上的點的路徑。
  3. 找到與路徑相交的第一條邊(根據使用座標的計算找到不可能與路徑相交的偏斜邊,並在找到相交邊時將其消除)。
  4. 找出第一交叉點後,從點A到PointB路徑改變爲點A到交叉點和沿相交的邊緣所產生的路徑的點,並從那裏至點B.
  5. 點3 N 4被重複直到路徑PointB是完整的,不會與任何邊相交。

我實現了這個算法,即使這沒有給出一個確切的最短路徑。這給了偉大的輸出。我想分享Java代碼,如果有人要求,因爲我覺得很難解釋我是如何實現的以上幾點。

+0

要得到最短的路徑,您應該創建一個圖形,其中的節點將是矩形的邊緣。然後連接彼此可見範圍內的節點並存儲每條連接線的長度。將起始點和終點添加到此圖表後,您可以在其上運行A *代碼。 – Chechulin