diff options
Diffstat (limited to 'info/drawing-with-metapost/src/archimedean-tools.mp')
-rw-r--r-- | info/drawing-with-metapost/src/archimedean-tools.mp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/info/drawing-with-metapost/src/archimedean-tools.mp b/info/drawing-with-metapost/src/archimedean-tools.mp new file mode 100644 index 0000000000..e10c8f447f --- /dev/null +++ b/info/drawing-with-metapost/src/archimedean-tools.mp @@ -0,0 +1,33 @@ +% 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 polyc 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; + +% a polygon of n sides of a given length +vardef polya(expr n, s) = + save r, x, y; numeric r, x, y; + (x, y) = dir (180/n); + 2r = s * x / y; + for i=0 upto n-1: + (left * s/2) shifted (r * down) rotated (360 / n * i) -- + endfor cycle +enddef; +vardef median(expr P) = + (origin for i=1 upto length P: + point i of P endfor) / length P +enddef; + |