2012-04-16 89 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将自动引导使用最大单元格的路径(因此计算步骤最少)。 注意:使较大的三维网格有一个稍低的权重,以便它的路径是有利的。

这可以用于许多应用程序。例如,如果您只能在地面上行走,那么只需在无法到达的区域移除街区。