如何存储多连接waypoints

How to store multi connected waypoints

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

我坚持的部分是我如何构建数据和存储我的数据,所以我知道哪个路点指向哪个路点(不止一个路点可以连接到任何其他路点)。

所以目前如果你想象我有这个作为我的数据:

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 位置以及任何 waypoints 也可能连接到它们的东西。

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