MATLAB实战 | 科赫曲线的绘制

举报
TiAmoZhang 发表于 2023/09/27 14:15:24 2023/09/27
【摘要】 简介: 科赫曲线的绘制

image.png


#01、应用实战

自然界存在许多复杂事物和现象,如蜿蜒曲折的海岸线、天空中奇形怪状的云朵、错综生长的灌木、太空中星罗棋布的星球等,还有许多社会现象,如人口的分布、物价的波动等,它们呈现异常复杂而毫无规则的形态,但它们具有自相似性。人们把这些部分与整体以某种方式相似的形体称为分形(fractal),在此基础上,形成了研究分形性质及其应用的科学,称为分形理论。科赫曲线是典型的分形曲线,由瑞典数学家科赫(Koch)于1904年提出。下面以科赫曲线为例,说明分形曲线的绘制方法。

##1. 科赫曲线的构造原理

科赫曲线的构造过程是,取一条直线段L0,将其三等分,保留两端的线段,将中间的一段用以该线段为边的等边三角形的另外两边代替,得到曲线L1,如图1所示。再对L1中的4条线段都按上述方式修改,得到曲线L2,如此继续下去进行n次修改得到曲线Ln,当n→∞时得到一条连续曲线L,这条曲线L就称为科赫曲线。

image.png


■ 图1 科赫曲线构造过程

科赫曲线的构造规则是将每条直线用一条折线替代,通常称之为该分形的生成元,分形的基本特征完全由生成元决定。给定不同的生成元,就可以生成各种不同的分形曲线。分形曲线的构造过程是通过反复用一个生成元来取代每一直线段,因而图形的每一部分都和它本身的形状相同,这就是自相似性,这是分形最为重要的特点。分形曲线的构造过程也决定了制作该曲线可以用递归方法,即函数自己调用自己的过程。

对于给定的初始直线L0,设有A(ax,ay)、B(bx,by),按照科赫曲线的构成原理计算出C、D、E各点坐标如下。

image.png


##2. 科赫曲线的程序实现

定义对直线L0进行替换的函数koch(),然后利用函数的递归调用,分别对AC、CD、DE、EB线段调用koch()函数,通过递归来实现“无穷”替换,因为不能像数学家的设想那样运算至无穷,所以根据要显示的最小长度作为递归的终止条件。

首先编写M函数koch()如下:

image.png


image.png


M函数编写完成后,在命令行窗口输入以下命令:

image.png


命令运行结果如图2所示,改变depth的值可以获得不同细腻程度的科赫曲线。

image.png


■ 图2 科赫曲线

在程序中3次调用koch()函数,实现三角形3条边各自的科赫曲线,形成科赫雪花曲线效果。在命令行窗口输入以下命令,程序运行结果如图3所示。

image.png


image.png


■ 图3 科赫雪花曲线

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。