How to animate Sierpinski triangle construction

Try this (edited to get rid of global as per @DNF advice):

using Plots; gr(dpi=100)

function sierpinski_gif(n)
    p = scatter(1, xlim=(0,1), ylim=(0,√3/2), legend=false, ms=1.5, msw=0, marker=:utriangle, c=:black)
    m = 0.5 .* ((0,0) .+ (1,0))
    anim = @animate for i=1:n
        m = 0.5 .* (m .+ rand([(0,0), (1,0), 0.5 .* (1, √3)]))
        push!(p, m)
    end every 10
    gif(anim, "sierpinski.gif")
    return p
end

sierpinski_gif(5000)        # 21 s (40 M allocs: 889 MiB, 0.4% gc time)
2 Likes