2012-04-16 92 views
1

我意識到這與編程問題沒有嚴格關係,但是因爲SO是編程相關問題的最佳資源,所以我決定嘗試一下。 :)尋路:如何爲路徑追蹤算法創建路徑數據?

我有一個項目,我需要做一個建築物內的JavaScript與3D路徑尋找。 Dijkstra算法可能是最好的情況,因爲它可以很好地處理不規則形狀。

但是,問題是這樣的: Dijkstra需要節點結構才能工作。但是如何創建這些數據?很明顯,某些轉換需要從基礎數據中完成,但是如何創建基礎數據?通過藍圖,獲取每個可能的路徑節點的y值,手動計算距離似乎有點過分...並且容易出現粗俗字詞...

我甚至想過使用Google Scetchup來做這件事。爲每條可能的路徑繪製線條,但問題是從中獲取路徑數據。 :/

我不能成爲第一個有這個問題的人......任何想法?有沒有現成的工具來創建路徑數據?

+0

如果您有某種建築物的3D模型(如dwg),可以將其中的路徑繪製爲多段線,然後將這些多段線保存爲dxf文件。 dxf文件包含文本格式的繪圖數據,並且頂點很容易提取。對於此任務,您需要AutoCAD或其他讀取/寫入dwgs和dxfs的應用程序。我已經做了幾年前的事情,但不幸的是我沒有這個JavaScript代碼了。 – Teemu 2012-04-16 14:45:00

回答

0

找不到任何現成的工具,所以我最終創建了Google SketchUp中的路徑數據作爲行,將它們導出爲Collada文件併爲Collada XML數據編寫我自己的轉換器。

0

這可以通過構建3D網格並移除與3D對象相交的立方體在代碼中完成。我會然後分層多個3d網格(每次增加一倍的大小),它提供了一個更普遍的可達性的想法(由較小的網格構建而成),然後憑藉路徑查找算法,您總能找到最有效的路徑AB將自動引導使用最大單元格的路徑(因此計算步驟最少)。 注意:使較大的三維網格有一個稍低的權重,以便它的路徑是有利的。

這可以用於許多應用程序。例如,如果您只能在地面上行走,那麼只需在無法到達的區域移除街區。