基于目标的iOS向量场路径寻找。
如果您需要计算多个具有相同目标的对象的最短路径,则这种方法比传统的路径寻找算法更高效。它为整个地图创建一个热图,这需要时间。但对于每个对象,它只需要遵循热图值。
如果您不使用CocoaPods,则可以在Pod/Classes
内找到源代码文件。
只需创建一个自己的Tile类,该类实现了 протокол DMTile
。
添加以下两个属性
@synthesize distance;
@synthesize position;
并添加方法 costFromSource:
- (int)costFromSource:(id<DMTile>)sourceTile {
return 1;
}
在这里您可以返回该瓦片的成本。如何实现由您自己决定。如果您的成本取决于方向,则可以获取源瓦片(在路径中位于其之前的一个)。
初始化一个DMHeatMap
并将其作为成员保留。设置地图属性。地图属性应该是一个二维数组。外数组表示每一行。每一行是一个包含您瓦片的NS数组。希望这不会听起来太复杂。
每次目标更改时,都必须设置目标属性并调用方法generate
。
对于需要新路径的每个对象,只需调用方法points:
。
http://www.youtube.com/watch?v=Y3H0WLZHtzU
目前它不支持对角线移动,因为对于我的用例来说,这并非必需。您可以很容易地添加此功能。只需查看确定邻居的位置。应该在两个地方执行,一次为热图,一次为路径寻找。