▼
我要做什么?
Sutcliffe Pentagons!一个奇异的分形怪咖——
绘制一个普通的五边形,然后找出其五边中每一边的中点并过这些点绘制垂直于此边的线段,而这些线段的末端则连接生成另一个五边形。我打个草图:
在这样做的同时,该形状的其余部分也最终被细分为更多的五边形。这意味着在每个五边形内有六个副五边形。在其中的每一个中,又有六个子五边形向下重复……
接着,怪咖出现了。
▼
###我怎么做的?
Do you find yourself overly thrilled by the mathematics of this?
打开你的草图—— Processing, 开工吧!!!
####Step 1: Drawing a pentagon using rotation
画一个普通的五边形,你会怎么做?
我选用的是一种较通用的方式:
围绕屏幕中心旋转360度,并以特定角度推算顶点。例如,如果每72度绘制一个点,那我们就会得到一个五角形。
// 根类
class Root {
PVector[] pointArr; // 顶点的数组
Branch rootBranch;
Root() {
pointArr = new PVector[sideNum]; // 五边形时,sideNum=5
int count = 0;
for (float i = 0; i<360; i+=360/sideNum) {
float x = width/2 + (400 * cos(radians(i)));
float y = height/2 + (400 * sin(radians(i)));
if (count < sideNum) { // 保证数组长度
pointArr[count] = new PVector(x, y);
}
count++;
}
rootBranch = new Branch(0, pointArr);
}
void display() {
stroke(strokeHue, 70, 100, 100);
rootBranch.display();
}
}
####Step 2: Functions to calculate the midpoints of a set of vertices
根发芽长成了枝丫。
我们需要一个枝丫类。枝丫从根那里得到生长的