2009-04-19 19 views
-1

J'essaie de trouver comment dessiner la courbe des dragons, avec une tortue python utilisant le système An L-System ou Lindenmayer. I non le code est quelque chose commeDessiner une courbe de Dragons en Python

la courbe de Dragon; état initial = 'F', règle de remplacement - remplacer 'F' par 'F + F-F', nombre de remplacements = 8, longueur = 5, angle = 60

Mais je ne sais pas comment le mettre en code .

Répondre

0

Eh bien, sans doute, vous pouvez commencer par définir:

def replace(s): 
    return s.replace('F', 'F+F-F') 

Ensuite, vous pouvez générer votre séquence:

code = 'F' 
for i in range(8): 
    code = replace(code) 

Je ne suis pas familier avec turtle donc je ne peux pas vous aider Là.

3

Tracer la courbe de dragon en utilisant le module turtle (suggéré par @John Fouhy):

#!/usr/bin/env python 
import turtle 
from functools import partial 

nreplacements = 8 
angle = 60 
step = 5 

# generate command 
cmd = 'f' 
for _ in range(nreplacements): 
    cmd = cmd.replace('f', 'f+f-f') 

# draw 
t = turtle.Turtle() 
i2c = {'f': partial(t.forward, step), 
     '+': partial(t.left, angle), 
     '-': partial(t.right, angle), 
} 
for c in cmd: i2c[c]() 
+0

Ha! Si vous avez manuellement compressé cela pourrait presque tenir dans un tweet – Rich

+0

importer la tortue; de ​​functools importer partiel comme p; n, a, s, c = (8,60,5, 'f'); pour _ dans la plage (n): c = c.réplace ('f', 'f + f -f'); t = tortue.Tortelle(); i = {'f': p (t.forward, s), '+': p (t.gauche, a), '-': p (t.right, a)}; pour b dans c: i [b]() – Rich

Questions connexes