📅  最后修改于: 2020-05-11 09:40:28             🧑  作者: Mango
什么是科赫曲线?
科赫雪花(也称为科赫曲线,科赫星或科赫岛)是一种数学曲线,是最早描述的分形曲线之一。 它基于Koch曲线,该曲线出现在1904年由瑞典数学家Helge von Koch题为“在无切线的连续曲线上,可以从基本几何构造而成”。
雪花面积的变化收敛到原始三角形面积的8/5倍,而雪花周长变化到无穷大。 因此,雪花具有由无限长的线限制的有限区域
实现
步骤1:
画一个等边三角形。 您可以使用指南针或量角器来绘制它,或者,如果您不想花费太多时间绘制雪花,也可以只看一下它。
第2步:
将每一边分成三个相等的部分。 这就是为什么将边整整为三很方便的原因。
第三步:
在每个中间部分绘制一个等边三角形。 测量中间三分之一的长度,以了解这些新三角形的边的长度。
步骤4:
将每个外侧分成三份。 您可以看到第二代三角形涵盖了第一个三角形。 这三个线段不应分为三个部分。
第五步:
在每个中间部分绘制一个等边三角形。
表示为Lindenmayer系统
科赫曲线可以通过以下重写系统 ( Lindenmayer系统 )表示:
字母 :F
常数 :+ 、?
公理 :F
生产规则 :F? F + F–F + F
在此,F表示“向前拉”,–表示“向右转60°”,+表示“向左转60°”。
要创建科赫雪花,可以使用F ++ F ++ F(等边三角形)作为公理。
创建科赫曲线:
# Python程序打印部分科赫曲线.
# 导入库 : turtle standard
# Python图形库
from turtle import *
#function to create koch snowflake or koch curve
def snowflake(lengthSide, levels):
if levels = = 0 :
forward(lengthSide)
return
lengthSide / = 3.0
snowflake(lengthSide, levels 1 )
left( 60 )
snowflake(lengthSide, levels 1 )
right( 120 )
snowflake(lengthSide, levels 1 )
left( 60 )
snowflake(lengthSide, levels 1 )
# 主函数
if __name__ = = "__main__" :
# 定义乌龟的速度
speed( 0 )
length = 300.0
# 向上拉笔–移动时不绘画.
penup()
# 向后移动乌龟一定距离,与乌龟前进的方向相反.
# 不要改变乌龟的方向.
backward(length / 2.0 )
# 向下拉笔–移动时绘图.
pendown()
snowflake(length, 4 )
# 控制乌龟的关闭窗口
mainloop()
要创建带有Koch曲线的完整雪花,我们需要重复相同的图案3次。 因此,让我们尝试一下。
# Python程序可打印完整的科赫曲线.
from turtle import *
# 创建科赫雪花或科赫曲线的功能
def snowflake(lengthSide, levels):
if levels = = 0 :
forward(lengthSide)
return
lengthSide / = 3.0
snowflake(lengthSide, levels 1 )
left( 60 )
snowflake(lengthSide, levels 1 )
right( 120 )
snowflake(lengthSide, levels 1 )
left( 60 )
snowflake(lengthSide, levels 1 )
# 主函数
if __name__ = = "__main__" :
# 定义乌龟的速度
speed( 0 )
length = 300.0
# 向上拉笔–移动时不绘画.
# Move the turtle backward by distance, opposite
# to the direction the turtle is headed.
# 不要改变乌龟的方向.
penup()
backward(length / 2.0 )
# 向下拉笔–移动时绘图.
pendown()
for range ( 3 ): i ):
snowflake(length, 4 )
right( 120 )
# 控制乌龟的关闭窗口
mainloop()