8.1 什么是分形
*背景:术语分形(源自拉丁文fractus,意思是“破碎”)是数学家本华·曼德博(Benoit Mandelbrot)于1975年提出的。在他的《大自然的分形几何》(The Fractal Geometry of Nature)中,分形被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且 每一部分都是整体缩小后的形状(至少近似)”。
最著名且最具代表性的分形图案是以曼德博的名字命名的,也就是上图的曼 德博集合。曼德博集合是由复二次多项式迭代生成的。
*思想:
每个细节形状都是缩小后的整体形状
*辨析:
伪:单纯的自相似并不能构成分形。一 条直线也具有自相似的特征,它在任意缩放尺度下看起来都是一样的,而且可以看成 是由无数短直线构成的,但直线并不是分形。
正:分形的特点是在小尺度下也有精细的结构。
8.2 递归
*示例1:
void drawCircle(int x, int y, float radius)
{
ellipse(x, y, radius, radius);
if(radius > 2)
{
radius *= 0.75f;
drawCircle(x, y, radius); drawCircle() //函数递归地调用自身
}
}
*示例2:
void setup()
{
size(400,400);
smooth();
}
void draw()
{
background(255);
drawCircle(width/2,height/2,200);
}
void drawCircle(float x, float y, float radius)
{
stroke(0);
noFill();
ellipse(x, y, radius, radius);
if(radius > 2)
{
drawCircle(x + radius/2, y, radius/2); //为了产生分支效果,drawCircle()函数在两处drawCircle(x - radius/2, y, radius/2);
}
}
8.3 递归函数实现康托尔集
void cantor(float x, float y, float len) {
if (len >= 1) //如果长度小于1个像素,就停止递归!
{
line(x,y,x+len,y);
y +=