\documentclass[border=5mm]{standalone} \usepackage{luamplib} \begin{document} \mplibtextextlabel{enable} \begin{mplibcode} vardef koch(expr level, a, b) = if level = 0: a -- b else: save p, q, r; pair p, q, r; p = 1/3[a,b]; r = 2/3[a,b]; q = r rotatedabout(p, 60); koch(level-1, a, p) & koch(level-1, p, q) & koch(level-1, q, r) & koch(level-1, r, b) fi enddef; beginfig(1); wd = 300; for n=0 upto 4: numeric y; y = -1/3 wd * n; path k; k = koch(n, origin, (wd, 0)) shifted (0, y); draw k withcolor 2/3 blue; label.urt("\small\textsf{Level " & decimal n & "}", point infinity of k); label.top("$\scriptstyle " & decimal length k & "/" & decimal arclength k & "$", (wd/2, y)); endfor endfig; \end{mplibcode} \end{document}