【问题标题】:Fibonacci Spiral - Robocode斐波那契螺旋 - Robocode
【发布时间】:2013-06-26 21:44:57
【问题描述】:

有谁知道我如何在 Robocode 中的某个点周围按照斐波那契模式进行螺旋运动?我有 setTurnRight (double)、setAhead (double)、getX () 和 getY () 等方法。

我试着用这种方式制作一个没有所需标准的简单螺旋,但它不起作用......它更像是一个圆圈。

this.setAhead(this.direction * Double.POSITIVE_INFINITY);
if (this.direction == 1) {
    this.setTurnRight(Utils.normalRelativeAngleDegrees(this.enemy.getBearing() + 60));
} else {
    this.setTurnRight(Utils.normalRelativeAngleDegrees(this.enemy.getBearing() + 120));
}

游戏物理: http://robowiki.net/wiki/Robocode/Game_Physics

【问题讨论】:

标签: java fibonacci spiral robocode


【解决方案1】:

Robocode 对数螺旋

这是一种使机器人遵循对数螺旋的有效运行方法,我相信它是黄金螺旋(可以用斐波那契数近似的螺旋)的近似值。

    public void run() {
      double v = 5;
      double c = Math.PI*2;
      double a = .1;
      double b = .0053468;

      setMaxVelocity(v);
      setAhead(100*999);
      setTurnRight(360*999);
      while(true)
      {
          double t = getTime();
          double f = a*Math.pow(Math.E,b*t);
          double w = v/(c*f);       

          setMaxTurnRate(w);
          execute();
          System.out.println(t+"\t"+w);
      }
    }

说明

要在圆周上移动(普通螺旋),您需要保持恒定的速度(机器人移动的速度)和恒定的旋转速度(机器人的转动速度) )。有几种方法可以从这种微不足道的螺旋运动变成更有趣的东西。 最简单的螺旋运动方法是保持恒定速度并改变转速。 This游戏开发交流的回答很好地介绍了如何获得转速的近似方程.

  • w = v / (2*pi*t)w = v / (2*pi*f(t)) 其中:
    • w = 转速
    • v = 速度
    • pi = 3.14...
    • t = 时间或 f(t) = 半径随时间变化的函数

这个方程给出了一种沿着螺旋移动的方法,我们可以通过指定 f(t) 来选择我们想要的任何螺旋。要获得黄金螺旋的正确半径函数,请查看关于黄金螺旋的 this wiki 页面。它给出了这个等式:

  • r = a*e^(b*theta) 或换句话说 f(t) = a*e^(b*t) 其中:
    • f(t) = 我们的半径函数
    • a = 用于缩放螺旋的任意常数
    • e = 欧拉常数
    • b = .0053468(如果使用弧度,则为 .3063489)
    • t = 时间

结论

剩下的就是将此代码合并到您的机器人中,并为 av 选择您自己的值。 v 将决定机器人的速度,因此较大的 v 是个好主意(最大值为 10),因为 w 的最大值为在 8 中,您应该相应地缩放 a,以使 w 尽可能长时间地保持在 0 和 8 之间(这就是我包含 println 的原因)。

[注意:我想不出一种简单的方法来将黄金螺旋叠加在机器人的路径上以检查其准确性。因此,虽然它显然是一个对数螺旋,但我不确定它在多大程度上接近所需的黄金螺旋]

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2015-06-05
    • 2014-05-23
    • 2013-08-09
    • 2011-11-27
    • 2013-03-31
    相关资源
    最近更新 更多