Как я могу создать треугольник Серпинского (фрактал)?

Мне нужно запрограммировать треугольник Серпинского с PHP, который дает следующий вывод изображения:

введите описание изображения здесь

Я действительно не знаю, с чего начать, поэтому любые алгоритмы или идеи приветствуются.

2

Решение

Учитывая координаты вершин внешнего треугольника, вы можете легко найти координаты вершин большого пустого треугольника (они являются средней точкой ребер).

Итак, из внешнего треугольника вы можете построить три больших непустых треугольника.

Треугольник Серпинского получается повторением этого процесса несколько раз рекурсивно. Когда вы достигаете желаемой глубины рекурсии, вы просто рисуете треугольник.

В псевдокоде:

Sierpinski(P, Q, R, Depth):
if Depth == Limit:
Line(P, Q); Line(Q, R); Line(R, P)
else:
PQ= (P + Q) / 2; QR= (Q + R) / 2; RP= (R + P) / 2;
Sierpinski(P, PQ, RP, Depth + 1);
Sierpinski(Q, QR, PQ, Depth + 1);
Sierpinski(R, RP, QR, Depth + 1);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]