Я следовал руководству Шиффмана о рекурсии, чтобы получить следующее:
Как видите, он не идеален, и я думаю, что код можно оптимизировать. Как избавиться от толстых линий, которых не должно быть? И если у вас есть идея, как я могу оптимизировать этот код, скажите мне, пожалуйста!
Это было сделано с обработкой 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);
}
}
int
), 266/3 = 88,6666667 (усечено до 88 дляint
). Я предполагаю, что параметры функцииSierpinski
должны бытьfloat
. (Это не ответ, потому что я не могу это проверить, но если вы подтвердите, что это работает, я напишу это как ответ (и, возможно, также попробую...)) - person Marco13   schedule 27.05.2018