科赫曲线雪花上色(Koch curve)是一个简单的分形(fractal)图形瑞典数学家海里格·冯·科赫(
于 1904 年的论文 [1] 中提及科赫曲线雪花上色的构造方法。
给定┅直线线段把它等分三段,加入一个等边三角形以三段的中间一段为底对齐,再去除该段线段然后,对每个新线段重复进行上述步驟就能形成科赫曲线雪花上色:
当,科赫曲线雪花上色的长度也是无穷的
如果画 3 条科赫曲线雪花上色,每次旋转 120 度就能得到科赫雪婲():
我们可以用斜线 /、反斜线 \、下划线 _ 和空格这 4 个 ASCII 字符来绘画这个图形:
但有些情况我们需要在一个字符中画下划线和斜线,例如 n = 3 的時候:
这时候我们可以选择只画斜线、反斜线
我们创建一个字符数组 image 作为画布,用于存储绘画的中间结果最后再把数组打印出来。数组的大小为画布宽长之积 w * h
设坐标系统是 x 向右、y 向下,并定义字符的左下角为坐标例如,画笔从 (x, y) 之处往右畫便赋值 image[y * w + x] = '_' ,并把 x 增 1
我们也定义 6 个方向,0 代表向右1代表右上,2 代表左上等注意水平方向(0 和 3)需要画两个下划线,其他方向只画一個字符
每次调用 KochCurve(n, dir) 函数,表示我们要从当前位置 (x, y) 向 dir 方向绘画一条 n 阶科赫曲线雪花上色那么要画一条 n 阶科赫曲线雪花上色,其实就只需要根据所需方向画 4 条 n - 1 阶科赫曲线雪花上色直到 n = 0,一条 0 阶科赫曲线雪花上色就是一条直线我们届时只需按 dir 用字符画一条直线。
科赫雪花仅僅是由 3 科赫曲线雪花上色组成我们只需改一下 main(),把画布变大一点以及在合适的起始坐标画 3 条科赫曲线雪花上色:
输出(只展示 n = 3):
分形图形可以用极简单的定义,生成复杂的图形在本文中,展示如何用 C 语言中利用递归和 ASCII 字符绘画出科赫曲线雪花上色和科赫雪花。
你還可以简单地改变 KochCurve() 中的实现产生不同的变种,如 展示的:
你还可以尝试一下不使用画布,而是用《》的框架来绘画但这样需要在每個字符格子绘画整条曲线,性能较差要提升性能,可使用每阶科赫曲线雪花上色的包围盒( bounding box)作剔除──如果现时的坐标不在包围盒之內也毋须递归到低一阶的科赫曲线雪花上色了。
“雪花曲线”是高中数学(试验夲)第七章中的拓展内容.教材中介绍了
提出并解决了四个问题.由于学生对雪花有
因而对用数列知识研究解决
教材把“雪花曲线”编入拓展内容旨在培养学生应用数学知识解决实际问题
通过对雪花曲线的探索与研究,
还可以了解一些分形几何的初步知识.
在一期课改的敎材中没有“雪花曲线”这一内容但我感到,学生在学完
数列与极限的知识后已经具备了探究“雪花曲线”的能力.结合嘉定教师进
修学院“研、训、教”一体化的“大师训”教研模式,我选择了“雪花曲线”
这一教学内容在嘉定一中高三(
)班上了一堂“下海课”
數学课堂上进一步渗透研究性学习,另一方面是请各基层学校教师一起进行新
.进一步巩固数列与极限的有关知识.
.培养应用数学知识解决实际问题的能力.
的探索与研究培养学生辩证唯物主义的科学态度
及合作交流的学习能力.
数学课堂应该是发现问题、解决问题的場景,学生要成为学习的主人成
为知识的“发现者”和“创造者”
,教学过程应该是学生主动获取知识、发展能
力、体验数学的过程.為此我作了如下的教学设计:
.创设情境:学生熟悉的雪花.
从而引发学生的学习兴趣,