summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex')
-rw-r--r--doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex166
1 files changed, 166 insertions, 0 deletions
diff --git a/doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex b/doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex
new file mode 100644
index 000000000..72c9528e8
--- /dev/null
+++ b/doc/context/sources/general/manuals/luametafun/luametafun-arrow.tex
@@ -0,0 +1,166 @@
+% language=us
+
+\environment luametafun-style
+
+\startcomponent luametafun-arrow
+
+\startchapter[title={Arrow}]
+
+Arrows are somewhat complicated because they follow the path, are constructed
+using a pen, have a fill and draw, and need to scale. One problem is that the
+size depends on the pen but the pen normally is only known afterwards.
+
+\startbuffer[1a]
+\startMPcode
+draw lmt_arrow [
+ path = (fullcircle scaled 3cm),
+]
+ withpen pencircle scaled 2mm
+ withcolor "darkred" ;
+\stopMPcode
+\stopbuffer
+
+\startbuffer[1b]
+\startMPcode
+draw lmt_arrow [
+ path = (fullcircle scaled 3cm),
+ length = 8,
+]
+ withpen pencircle scaled 2mm
+ withcolor "darkgreen" ;
+\stopMPcode
+\stopbuffer
+
+\startbuffer[1c]
+\startMPcode
+draw lmt_arrow [
+ path = (fullcircle scaled 3cm rotated 45),
+ pen = (pencircle xscaled 2mm yscaled 1mm rotated 45),
+]
+ withpen pencircle xscaled 2mm yscaled 1mm rotated 45
+ withcolor "darkblue" ;
+\stopMPcode
+\stopbuffer
+
+\startbuffer[1d]
+\startMPcode
+pickup pencircle xscaled 2mm yscaled 1mm rotated 45 ;
+draw lmt_arrow [
+ path = (fullcircle scaled 3cm rotated 45),
+ pen = "auto",
+]
+ withcolor "darkyellow" ;
+\stopMPcode
+\stopbuffer
+
+To some extent \METAFUN\ can help you with this issue. In \in {figure} [arrows:1]
+we see some variants. The definitions are given below:
+
+\typebuffer[1a][option=TEX]
+\typebuffer[1b][option=TEX]
+\typebuffer[1c][option=TEX]
+\typebuffer[1d][option=TEX]
+
+\startplacefigure[reference=arrows:1]
+ \startcombination[4*1]
+ {\getbuffer[1a]} {default}
+ {\getbuffer[1b]} {length}
+ {\getbuffer[1c]} {pen}
+ {\getbuffer[1d]} {auto}
+ \stopcombination
+\stopplacefigure
+
+There are some options that influence the shape of the arrowhead and its
+location on the path. You can for instance ask for two arrowheads:
+
+\startbuffer[3]
+\startMPcode
+ pickup pencircle scaled 1mm ;
+ draw lmt_arrow [
+ pen = "auto",
+ location = "both"
+ path = fullcircle scaled 3cm rotated 90,
+ ] withcolor "darkgreen" ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[3][option=TEX]
+
+\startlinecorrection
+\getbuffer[3]
+\stoplinecorrection
+
+The shape can also be influenced although often this is not that visible:
+
+\startbuffer[4]
+\startMPcode
+ pickup pencircle scaled 1mm ;
+ draw lmt_arrow [
+ kind = "draw",
+ pen = "auto",
+ penscale = 4,
+ location = "middle",
+ alternative = "curved",
+ path = fullcircle scaled 3cm,
+ ] withcolor "darkblue" ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[4][option=TEX]
+
+\startlinecorrection
+\getbuffer[4]
+\stoplinecorrection
+
+The location can also be given as percentage, as this example demonstrates. Watch
+how we draw only arrow heads:
+
+\startbuffer[5]
+\startMPcode
+ pickup pencircle scaled 1mm ;
+ for i = 0 step 5 until 100 :
+ draw lmt_arrow [
+ alternative = "dimpled",
+ pen = "auto",
+ location = "percentage",
+ percentage = i,
+ dimple = (1/5 + i/200),
+ headonly = (i = 0),
+ path = fullcircle scaled 3cm,
+ ] withcolor "darkyellow" ;
+ endfor ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[5][option=TEX]
+
+\startlinecorrection
+\getbuffer[5]
+\stoplinecorrection
+
+The supported parameters are:
+
+\starttabulate[|T|T|T|p|]
+\FL
+\BC name \BC type \BC default \BC comment \NC \NR
+\ML
+\NC path \NC path \NC \NC \NC \NR
+\NC pen \NC path \NC \NC \NC \NR
+\NC \NC string \NC auto \NC \NC \NR
+\NC kind \NC string \NC fill \NC \type {fill} or \type {draw} \NC \NR
+\NC dimple \NC numeric \NC 1/5 \NC \NC \NR
+\NC scale \NC numeric \NC 3/4 \NC \NC \NR
+\NC penscale \NC numeric \NC 3 \NC \NC \NR
+\NC length \NC numeric \NC 4 \NC \NC \NR
+\NC angle \NC numeric \NC 45 \NC \NC \NR
+\NC location \NC string \NC end \NC \type {end}, \type {middle} or \type {both} \NC \NR % middle both
+\NC alternative \NC string \NC normal \NC \type {normal}, \type {dimpled} or \type {curved} \NC \NR
+\NC percentage \NC numeric \NC 50 \NC \NC \NR
+\NC headonly \NC boolean \NC false \NC \NC \NR
+\LL
+\stoptabulate
+
+\stopchapter
+
+\stopcomponent
+