0

私は現在 Myro/Calico with Robotics を使用しています。フラクタルの再帰関数を実行しようとしています。私はPythonを使用しています。

ここで疑似コードをたどってきました。 フラクタル

これまでのところ、再帰なしで最初のステップを実装しようとしました。しかもよく走る

# 1 foot per 2 seconds.  x * 2 = feet desired.  
def fractal(x):
    waitTime = x*2
    turnRight(1, 0.825) #90 degree turn
    forward(1, x/3) #move length/3 steps
    turnLeft(1, 0.55)#60 degree turn
    forward(1, x/3) #move length/3 steps
    turnRight(1, 1.1) #120 degree turn
    forward(1, x/3) #move length/3 steps
    turnLeft(1, 0.55) #60 degree turn
    forward(1, x/3) #move length/3 steps

これは機能しますが、私の目標はこれを再帰的に実行することですが、反復ごとに小さな曲線を作成することです。やってみましたが、ロボットが思ったように動きません。

これが私の再帰の試みです

def fractal(x):
    waitTime = x*2
    if (x == 1):
        forward(x/3)
    else:
        (x-1)/3
    turnLeft(1,0.55) #60 degrees
    if (x == 1):
        forward(x/3)
    else:
        (x-1)/3
    turnRight(1, 1.1) #120 degree turn
    if (x == 1):
        forward(x/3)
    else:
        (x-1)/3
    turnLeft(1, 0.55)#60 degree turn
    if (x == 1):
        forward(x/3)
    else:
        (x-1)/3

私のロボットは左右にしか曲がっていませんが、完全な形にはなっていません。再帰のないものはフラクタルを開始しました。フラクタル全体を通過するには再帰が必要です。

4

1 に答える 1

1

これがあなたのやりたいことだと思います

x = number of interations
l = lenth(wait time)
def fractal(x, l):
    if (x == 1):
        forward(l/3)
    else:
        fractal((x-1), l/3)
    turnLeft(1,0.55) #60 degrees
    if (x == 1):
        forward(l/3)
    else:
        fractal((x-1), l/3)
    turnRight(1, 1.1) #120 degree turn
    if (x == 1):
        forward(l/3)
    else:
        fractal((x-1), l/3)
    turnLeft(1, 0.55)#60 degree turn
    if (x == 1):
        forward(l/3)
    else:
        fractal((x-1), l/3)
于 2014-11-14T18:01:42.823 に答える