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

我停留的部分是如何构造数据和存储数据,以便知道哪个航路点指向每个航路点(一个以上的航路点可以连接到任何其他航路点)。

因此,目前,如果您将图像作为我的数据,则为:

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位置以及任何航路点也可以连接到它们。

最佳答案

道路网络可以用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]};

10-07 20:30