void kvadrat(int x, int y, int n) {
if (n > 1) {
int x2 = x + n;
int y2 = y + n; // Рухатися діагонально вниз-вправо
rect(x, y, n, n); // Малюємо прямокутник
n = int(n / 2); // Зменшуємо розмір
kvadrat(x2, y2, n); // Рекурсивний виклик
}
}
void kvadrat2(int x, int y, int n) {
if (n > 1) {
int x2 = x - n;
int y2 = y + n; // Рухатися діагонально вниз-вліво
rect(x - n, y, n, n); // Малюємо прямокутник
n = int(n / 2); // Зменшуємо розмір
kvadrat2(x2, y2, n); // Рекурсивний виклик
}
}
void kvadrat3(int x, int y, int n) {
if (n > 1) {
int x2 = x + n; // Рухатися діагонально вниз-вправо
int y2 = y - n; // Рух вгору
rect(x, y - n, n, n); // Малюємо прямокутник (скориговане положення)
n = int(n / 2); // Зменшуємо розмір
kvadrat3(x2, y2, n); // Рекурсивний виклик
}
}
void kvadrat4(int x, int y, int n) {
if (n > 1) {
int x2 = x - n; // Рух вліво
int y2 = y - n; // Рух вгору (дзеркальний до квадрат2)
rect(x - n, y - n, n, n); // Малюємо прямокутник
n = int(n / 2); // Зменшуємо розмір
kvadrat4(x2, y2, n); // Рекурсивний виклик
}
}
void setup() {
size(400, 400);
kvadrat(0, 0, 100);
kvadrat2(400, 0, 100);
kvadrat3(0, 400, 100);
kvadrat4(400, 400, 100);
}
