如何存储多个连接的航点

时间:2015-01-20 10:19:59

标签: javascript arrays object

我正在尝试在网格上创建基本的2D道路系统。目前我有一个staight行列表,但它们没有相互连接。

我坚持的部分是我如何构建数据并存储我的数据,因此我知道哪个路点指向哪个路点(多个路点可以连接到任何其他路点)。

所以目前如果您想象我将此作为我的数据:

var point      = [];
    point[0]   = {'x':2,'y':6};
    point[1]   = {'x':2,'y':8};
    point[2]   = {'x':6,'y':9};
    point[3]   = {'x':7,'y':2};

现在假设点0连接到点2和3.点1连接到点3。

存储这些点链接的信息的最佳方法是什么,也允许我查找并获得与连接的航点相关的对象的属性(这对将来的寻路主要有用)。

例如,我可能需要在给定的x或y位置找到一个航点。或者我可能想要获得连接到例如点1的相关航点数据,例如它们的x和y位置以及航点也可以连接到它们。

1 个答案:

答案 0 :(得分:1)

道路网络可以用adjacency list表示。基本上,每个点都将给出一个列表(可以由数组实现),其中包含可以从中获得的索引。在您的示例中,这可以表示如下。

var point      = [];
point[0]   = {'x':2,'y':6, 'neighbors':[2,3]};
point[1]   = {'x':2,'y':8, 'neighbors':[3]};
point[2]   = {'x':6,'y':9, 'neighbors':[0]};
point[3]   = {'x':7,'y':2, 'neighbors':[0,1]};