diff options
Diffstat (limited to 'info/drawing-with-metapost/src/arch-snub-square.mp')
-rw-r--r-- | info/drawing-with-metapost/src/arch-snub-square.mp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/info/drawing-with-metapost/src/arch-snub-square.mp b/info/drawing-with-metapost/src/arch-snub-square.mp new file mode 100644 index 0000000000..c607b4e5c4 --- /dev/null +++ b/info/drawing-with-metapost/src/arch-snub-square.mp @@ -0,0 +1,72 @@ +\documentclass{standalone} +\usepackage{luamplib} +\begin{document} +\mplibtextextlabel{enable} +\begin{mplibcode} +input colorbrewer-cmyk +% a polygon of n sides on a given path +vardef poly expr n of p = + save x, y; + z0 = point 0 of p; + z1 = point 1 of p; + for i=2 upto n-1: + z[i] = z[i-2] rotatedabout(z[i-1], 180(2/n-1)); + endfor + for i=0 upto n-1: z[i] -- endfor cycle +enddef; +vardef median(expr P) = + (origin for i=1 upto length P: + point i of P endfor) / length P +enddef; +beginfig(1); + path t[], s[]; + s1 = poly 4 of (origin -- 42 dir 15); + t1 = poly 3 of subpath (2, 1) of s1; + t2 = poly 3 of subpath (3, 2) of s1; + t3 = poly 3 of subpath (2, 1) of t1; + t4 = poly 3 of subpath (2, 1) of t2; + s2 = poly 4 of subpath (2, 1) of t4; + + picture unit; + unit = image( + fill s1 withcolor Oranges 8 5; + fill t1 withcolor Blues 8 4; + fill t4 withcolor Blues 8 3; + fill t3 withcolor Greens 8 4; + fill t2 withcolor Greens 8 3; + fill s2 withcolor Reds 8 5; + forsuffixes $=s1, t1, s2, t2, t3, t4: + pair m; m = median($); + for i=1 upto length $: + draw point i - 1/2 of $ -- m + withpen pencircle scaled 3/2 withcolor Spectral 3 2; + endfor + endfor + ); + + pair u, v; + u = point 2 of t2 - point 0 of s1; + v = point 2 of t3 - point 0 of s1; + + for i=0 upto 6: + for j=0 upto 9: + draw unit shifted (i*u + j*v); + endfor + endfor + + % picture p; p = currentpicture; + % (wd, ht) = (urcorner p - llcorner p); + % currentpicture := nullpicture; + % p := p scaled (145mm / wd); + % undraw unitsquare xscaled 148mm yscaled 210mm shifted llcorner p shifted -(1.5mm, 1.5mm) + % withpen pencircle scaled 1/8; + % z0 = 1/2[llcorner currentpicture, ulcorner currentpicture]; + % draw z0 -- z0 shifted 3 right withpen pencircle scaled 1/8; + % z1 = 1/2[lrcorner currentpicture, urcorner currentpicture]; + % draw z1 -- z1 shifted 3 left withpen pencircle scaled 1/8; + % draw p; + % picture r; r = currentpicture rotated 90; + % currentpicture := nullpicture; + % draw r; +endfig; +\end{mplibcode} +\end{document} |