红色是行动物,它需要向目标移动,黑色是目标,目标本身存在一个对行动物的引力,普兰色是障碍,它会阻止行动物的运动,阻止能力就是散布于它四周的斥力场。
行动物本身没有能量和运动方向,但自身有X和Y二个值可以存储从周围获得的能量。于是行动物在空间场会受到斥力场和目标产生的引力场的作用。
假设引力场弱向分布,克服斥力场传播到行动物后,行动物获得初始运动能量,并从正态分布得到最大引力方向,在图中就是 Y 方向,于是行动物开始运动,运动方向是 Y 线指向的方向,运动力是目标产生的引力。
行动物运动到障碍物附近,会受到障碍物斥力场影响,假设行动物在引力和斥力共同作用下,产生矢量偏转,在绝对平衡情况下,偏转达到最大值,行动物移动方向就转变为 X (或 -X)继续运动,直到渐渐离开斥力场。在这个渐渐离开的过程中,由于引力的不断作用,行动物会产生围绕障碍物向目标的迂回路线。
编程的目的,就是计算这些步骤和这些步骤在特定的引力、斥力条件下,在每个空间距离作用下,所作出的运动行为。
从这个简单例子来看,写这样的一个代码不会非常难吧,就看你是不是对这种算法有浓厚的兴趣了。我不学无术,所以没什么兴趣去做。