用Scratch编程画分形几何图形系列之1:谢尔宾斯基三角

用Scratch编程画分形几何图形系列之1:谢尔宾斯基三角

首页休闲益智混沌多边形更新时间:2024-04-09

用Scratch编程画分形几何图形系列之一谢尔宾斯基三角

笔者曾经在头条上介绍过迷人的分形几何,也零星地写过用Scratch等编程工具画各种图形的短文,现在准备写一个用Scratch编程画分形几何图形的系列。

Scratch图形化编程工具是麻省理工推出的一款易学易用的编程工具,它提供了丰富的图形化编程模块,让用户可以通过拖拽块的方式完成程序的编写。本系列文章将介绍如何在Scratch中使用递归算法、L系统、IFS迭代函数系统等手段绘制出令人惊叹的分形几何图形,无需过高的编程门槛,你也可以通过本系列轻松上手,揣摩体会,循序渐进,让你的程序能够为你绘制出无限精彩的图像。

让我们从一个最著名谢尔宾斯基三角分形开始吧!

谢尔宾斯基出身于波兰,在20世纪之初,他在莱比锡大学担任数学教授长达35年,这期间他发表了许多重要的数学论文和著作,尤其是他的“集合论基础”与“测度论基础”两部著作被广泛认为是20世纪数学的最重要贡献之一。

谢尔宾斯基三角形,就是由这位现代拓扑学的奠基人之一发明的一种分形图形,它是由一个大三角形不断地被切割出三个等边小三角形,然后将中间的等边三角形去掉,留下剩下的三个小三角形,然后再对这三个小三角形,重复执行同样的操作,一直重复进行下去,直到无穷。最后我们得到的图案就是谢尔宾斯基三角形分形图,它是一种自相似的分形,具有美妙而神奇的几何变换性质。

谢尔宾斯基三角生成规则示意图

我们怎么用递归的算法来实现这个生成机制呢?那就是把去掉中间的等边三角形,变成在空白的大三角形的左下、右下和中上位置生成3个长度为原来一半的等边三角形就OK了。

首先我们先定义一个画实心等边三角形的模块(子程序),便于在递归中调用。

用画实心正多边形边数取3来画正三角形,使用了保存位置和回到原来位置的子程序

再来设计递归程序,最初(级数N=0),就是一个等边三角形,后面每一级都是在上一级三角形的左下、右下和中上位置生成3个长度为上一级一半的等边三角形。在递归算法中,我们为了实现递出去,归回来,使用了保存位置和归位两个子积木(子程序),注意体会。

画分形的递归子程序和主程序截图

主程序设置好一些初始值,比如图形颜色、递归的层级、分形的尺寸和初始位置和方向。

谢尔宾斯基三角形的生成机制被称为 “颗粒游戏” ,可以通过计算机来进行图形生成。这个游戏的规则非常简单,就是一直使用上述的过程,每一次将所有中间的等边三角形都删除,留下其他三角形。从下图可见,当你不断地去除更小的等边三角形时,你会发现每个在谢尔宾斯基三角形中的三角形,都是由不同等边三角形不断放大而成。因此,谢尔宾斯基三角形很直观的自相似性,无论是放大到几何尺度的短距离还是长距离,其形态都具有相似的结构。感兴趣的读者,自己动手试试吧。

级数N=6时的谢尔宾斯基三角

谢尔宾斯基三角是一个神奇的分形,我们可以用许多方法(比如混沌游戏IFS迭代系统、元胞自动机等等)生成它以及它的变形。我们在本系列的后面会陆续看到。

,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved