python分形几何_使用 Python 绘制分形: Koch 曲线、Julia 集、Mandelbrot 集

目录

1. Koch曲线

瑞典数学家Helge von Koch,在1904年发表的“从初等几何构造的一条没有切线的连续曲线”的论文中提出Korch曲线。它的描述如下:指定一条线段的长度\(l\)(可以理解为第0次迭代)

将这条线段三等分,并以中间的线段为底边构造一个等边三角形,然后去掉底边

对2中生成的曲线的每一条边重复2的操作(每操作一次称为一次迭代)

最终得到的集合图形长度为:$$L=l*(\frac{4}{3})^{N}$$,其中的N指的是迭代次数。

1.2 绘制方法:如果N=0,直接画出L长的直线即可

如果N=1(第一次迭代),画出长度为L/3的线段;画笔向左转60度再画长度为L/3长的线段;画笔向右转120度画长度为L/3长的线段;画笔再向左转60度画出长度为L/3的线段

如果n>1,第n次迭代相当于:n-1次迭代;画笔左转60度;n-1次迭代;画笔右转120度;n-1次迭代;画笔左转60度;n-1次迭代。

1.3 Python代码实现# -*- coding: utf-8 -*-

import turtle

Division = 3.0

DirectionAangle = [('left',60),('right',120),('left',60)]

def call(name):

if name == 'left':

return turtle.l

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Koch曲线是由瑞典数学家 Helge von Koch 在1904年首先提出的。它是一个自相似的分曲线,可以通过反复迭代生成。下面我们来利用分几何绘制Koch曲线和雪花。 Koch曲线的构造方法: 1. 将一条线段分成三段。 2. 将中间一段向外平移,成一个等边三角。 3. 在等边三角的底边上再次重复第一步和第二步。 4. 重复以上步骤,不断迭代,生成越来越复杂的Koch曲线绘制Koch曲线的代码如下: ```python import turtle def koch(t, order, size): """ 绘制Koch曲线的函数 t: Turtle对象 order: 迭代次数 size: 初始线段长度 """ if order == 0: t.forward(size) else: for angle in [60, -120, 60, 0]: koch(t, order-1, size/3) t.left(angle) def main(): t = turtle.Turtle() t.speed(0) t.penup() t.goto(-200, 0) t.pendown() koch(t, 4, 400) turtle.done() if __name__ == '__main__': main() ``` 这个程序使用Python的turtle库绘制Koch曲线,迭代次数为4,初始线段长度为400。可以根据需要调整这两个参数。 接下来,我们来绘制Koch雪花。Koch雪花是由三条Koch曲线组成的,它们的共同起点和终点组成一个等边三角。我们只需要在绘制完一条Koch曲线后,向左旋转120度,再绘制另外两条Koch曲线就可以了。 绘制Koch雪花的代码如下: ```python import turtle def koch_snowflake(t, order, size): """ 绘制Koch雪花的函数 t: Turtle对象 order: 迭代次数 size: 初始线段长度 """ for i in range(3): koch(t, order, size) t.right(120) def main(): t = turtle.Turtle() t.speed(0) t.penup() t.goto(-200, 0) t.pendown() koch_snowflake(t, 4, 200) turtle.done() if __name__ == '__main__': main() ``` 这个程序使用Python的turtle库绘制Koch雪花,迭代次数为4,初始线段长度为200。可以根据需要调整这两个参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值