用DOL系统绘制分形(python3.6)

本文,使用fractal模块,绘制分形图案。

东西/原料

  • 电脑
  • python3.6

要领/步调

  1. 1

    安装fractal模块。

    pip install fractal

  2. 2

    打开python安装目次内里的lib\site-packages\fractal文件夹内里的base.py文件,把第45行的内容改为:

    ……

                            pygame.quit()

                            sys.exit()

    ……

  3. 3

    然后新建py文件,运行如下代码:

    from fractal import Pen

    p = Pen([500, 300], title="Koch")

    p.setPoint([5, 190])

    p.doD0L(omega="f", P={"f": "f+f--f+f"}, 

            delta=60, times=5, length=490, rate=3)

  4. 4

    p = Pen([500, 500], title="Window")

    p.setPoint([100, 495])

    p.doD0L(omega="f+f+f+f+f", P={"f": "ff+f--f+f"},

            delta=72, times=3, length=490, rate=4.3)

    p.save('0.png')

    p.wait()

  5. 5

    p = Pen([500, 500], title="Window")

    p.setPoint([100, 495])

    p.doD0L(omega="f+f+f+f+f", P={"f": "ff+f--f+f"},

            delta=72, times=5, length=490, rate=4)

    p.save('0.png')

    p.wait()

  6. 6

    from fractal import IFS

    from random import random

    def ifsp(x, y):

        p = random()

        if p < 0.01:

            return (0, 0.16 * y)

        elif p < 0.07:

            if random() > 0.5:

                return (0.21 * x - 0.25 * y, 0.25 * x + 0.21 * y + 0.44)

            else:

                return (-0.2 * x + 0.26 * y, 0.23 * x + 0.22 * y + 0.6)

        else:

            return (0.85 * x + 0.1 * y, -0.05 * x + 0.85 * y + 0.6)

    ob = IFS([400, 500], title = "Leaf")

    ob.setPx(100, 100, 100)

    ob.setIfsp(ifsp)

    ob.doIFS(200000)

    ob.wait()

  7. 7

    from fractal import Pen

    p = Pen([500, 365])

    p.setPoint([400, 200])

    p.setWidth(1)

    p.doD0L(omega="L", P={"L": "L+R", "R": "L-R"},

                  delta=90, times=20, length=900, rate=1.5)

    p.save('0.png')

    p.wait()

    END

注重事项

  • 挪用fractal模块,可以在pygame窗口下,利用组合键Ctrl+P生存图片。
  • 发表于 2022-08-22 20:02
  • 阅读 ( 124 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论