用Python绘制龙曲线

发布于 2024-07-18 03:46:26 字数 159 浏览 10 评论 0原文

我正在尝试找出如何使用 L 系统或 Lindenmayer 系统绘制巨蟒龟的龙曲线。 我不知道代码类似于

龙曲线; 初始状态 = 'F',替换规则 - 将 'F' 替换为 'F+F-F',替换次数 = 8,长度 = 5,角度 = 60

但不知道如何将其放入代码中。

I am trying to work out how to draw the dragons curve, with pythons turtle using the An L-System or Lindenmayer system. I no the code is something like

the Dragon curve; initial state = ‘F’, replacement rule – replace ‘F’ with ‘F+F-F’, number of replacements = 8, length = 5, angle = 60

But have no idea how to put that into code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

仲春光 2024-07-25 03:46:26

在 Google 上首次点击“dragons curve python”:

http://www.pynokio.org/dragon .py.htm

您可以修改它以与您选择的绘图程序一起使用。 我会尝试 matplotlib。

First hit on Google for "dragons curve python":

http://www.pynokio.org/dragon.py.htm

You can probably modify that to work with your plotting program of choice. I'd try matplotlib.

面犯桃花 2024-07-25 03:46:26

使用turtle模块绘制龙曲线(由

#!/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]()

Draw the dragon curve using turtle module (suggested by @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]()
哎呦我呸! 2024-07-25 03:46:26

好吧,大概,您可以从定义开始:

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

然后您可以将序列生成为:

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

我不熟悉 turtle 所以我无法帮助您。

Well, presumably, you could start by defining:

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

Then you can generate your sequence as:

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

I'm not familiar with turtle so I can't help you there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文