From 352a2686282e95b2869728f8f321688f7e216d80 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Thu, 7 May 2020 11:47:12 +0200
Subject: 2020-05-07 11:00:00

---
 .../manuals/luametafun/luametafun-poisson.tex      | 159 +++++++++++++++++++++
 1 file changed, 159 insertions(+)
 create mode 100644 doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex

(limited to 'doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex')

diff --git a/doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex b/doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex
new file mode 100644
index 000000000..cd4b6ddab
--- /dev/null
+++ b/doc/context/sources/general/manuals/luametafun/luametafun-poisson.tex
@@ -0,0 +1,159 @@
+% language=us
+
+\environment luametafun-style
+
+\startcomponent luametafun-poisson
+
+\startchapter[title={Poisson}]
+
+
+When, after a post on the \CONTEXT\ mailing list, Aditya pointed me to an article
+on mazes I ended up at poisson distributions which to me looks nicer than what I
+normally do, fill a grid and then randomize the resulting positions. With some
+hooks this can be used for interesting patterns too. The algorithm is based on
+the discussion at:
+
+\starttyping
+http://devmag.org.za/2009/05/03/poisson-disk-sampling
+\stoptyping
+
+Other websites mention some variants on that but I saw no reason to look into
+those in detail. I can imagine more random related variants in this domain so
+consider this an appetizer. The user is rather simple because some macro is
+assumed to deal with the rendering of the distributed points. We just show some
+examples (because the interface might evolve).
+
+\startbuffer
+\startMPcode
+    draw lmt_poisson [
+        width    = 40,
+        height   = 40,
+        distance =  1,
+        count    = 20,
+        macro    = "draw"
+    ] xsized 4cm ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+\startlinecorrection
+    \getbuffer
+\stoplinecorrection
+
+\startbuffer
+\startMPcode
+    vardef tst (expr x, y, i, n) =
+        fill fullcircle scaled (10+10*(i/n)) shifted (10x,10y)
+            withcolor "darkblue" withtransparency (1,.5) ;
+    enddef ;
+
+    draw lmt_poisson [
+        width     = 50,
+        height    = 50,
+        distance  =  1,
+        count     = 20,
+        macro     = "tst",
+        arguments =  4
+    ] xsized 6cm ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+\startlinecorrection
+    \getbuffer
+\stoplinecorrection
+
+\startbuffer
+\startMPcode
+    vardef tst (expr x, y, i, n) =
+        fill fulldiamond scaled (5+5*(i/n)) randomized 2 shifted (10x,10y)
+            withcolor "darkgreen" ;
+    enddef ;
+
+    draw lmt_poisson [
+        width     = 50,
+        height    = 50,
+        distance  =  1,
+        count     = 20,
+        macro     = "tst",
+        initialx  = 10,
+        initialy  = 10,
+        arguments =  4
+    ] xsized 6cm ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+\startlinecorrection
+    \getbuffer
+\stoplinecorrection
+
+\startbuffer
+\startMPcode{doublefun}
+    vardef tst (expr x, y, i, n) =
+        fill fulldiamond randomized (.2*i/n) shifted (x,y);
+    enddef ;
+
+    draw lmt_poisson [
+        width     = 150,
+        height    = 150,
+        distance  =   1,
+        count     =  20,
+        macro     = "tst",
+        arguments =   4
+    ] xsized 6cm withcolor "darkmagenta" ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+\startlinecorrection
+    \getbuffer
+\stoplinecorrection
+
+\startbuffer
+\startMPcode
+    vardef tst (expr x, y, i, n) =
+        draw externalfigure "cow.pdf" ysized (10+5*i/n) shifted (10x,10y);
+    enddef ;
+    draw lmt_poisson [
+        width     = 20,
+        height    = 20,
+        distance  =  1,
+        count     = 20,
+        macro     = "tst"
+        arguments = 4,
+    ] xsized 6cm ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[option=TEX]
+
+\startlinecorrection
+    \getbuffer
+\stoplinecorrection
+
+The supported parameters are:
+
+\starttabulate[|T|T|T|p|]
+\FL
+\BC name      \BC type    \BC default \BC comment \NC \NR
+\ML
+\NC width     \NC numeric \NC 50      \NC \NC \NR
+\NC height    \NC numeric \NC 50      \NC \NC \NR
+\NC distance  \NC numeric \NC  1      \NC \NC \NR
+\NC count     \NC numeric \NC 20      \NC \NC \NR
+\NC macro     \NC string  \NC "draw"  \NC \NC \NR
+\NC initialx  \NC numeric \NC 10      \NC \NC \NR
+\NC initialy  \NC numeric \NC 10      \NC \NC \NR
+\NC arguments \NC numeric \NC  4      \NC \NC \NR
+\LL
+\stoptabulate
+
+\stopchapter
+
+\stopcomponent
+
-- 
cgit v1.2.3

