【发布时间】:2018-05-27 15:21:07
【问题描述】:
如您所见,它并不完美,我认为代码可以优化。我如何摆脱不应该存在的粗线?如果您知道如何优化此代码,请告诉我!
这是使用处理 3.3.6 制作的,代码如下:
void setup() {
size(800, 800);
}
void draw() {
background(255);
fill(0);
noStroke();
rectMode(CENTER);
Serpinski(width/2, height/2, width/3);
}
void Serpinski(int x, int y, int d) {
rect(x, y, d, d);
if (d > 1) {
Serpinski(int(x+ d), y, d*1/3);
Serpinski(int(x- d), y, d*1/3);
Serpinski(x, int(y+ d), d*1/3);
Serpinski(x, int(y- d), d*1/3);
Serpinski(int(x+ d), int(y+ d), d*1/3);
Serpinski(int(x- d), int(y- d), d*1/3);
Serpinski(int(x+ d), int(y- d), d*1/3);
Serpinski(int(x- d), int(y+ d), d*1/3);
}
}
【问题讨论】:
-
您指的是出现在最顶部 3x3 网格边界处的“粗”白线吗?我的猜测是它们只是由于舍入错误:800 / 3 = 266,666667(
int截断为 266),266 / 3 = 88,6666667(int截断为 88)。我猜Sierpinski函数的参数应该是float。 (这不是答案,因为我无法真正测试它,但如果您确认它有效,我会将其写为答案(也许也尝试一下......)) -
不要画白线,试着剪下黑色矩形。
标签: recursion processing fractals