如何创建Sierpinski三角形(分形)?

时间:2015-09-07 06:41:20

标签: php algorithm fractals

我需要用PHP编写一个Sierpinski三角形,它提供以下图像输出:

enter image description here

我真的不知道从哪里开始,所以欢迎任何形式的算法或想法。

1 个答案:

答案 0 :(得分:0)

给定外三角形顶点的坐标,您可以轻松找到大空三角形顶点的坐标(它们是边缘的中点)。

因此,从外三角形中,您可以构建三个大的非空三角形。

通过递归地重复该过程多次获得Sierpinski三角形。当您达到所需的递归深度时,您只需绘制三角形。

在伪代码中:

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);