summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 00:45:48 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 00:45:48 +0000
commit5dc602d16c5be2fd035b254ca23484a90aebd6dc (patch)
tree72efb15fba318cc2096a8cc6999ed3fa0bff317d /Master/texmf-dist/doc/metapost/featpost/example
parentb4fc5f639874db951177ec539299d20908adb654 (diff)
doc 5
git-svn-id: svn://tug.org/texlive/trunk@81 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/bugtrack/bughunt.mp57
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/bugtrack/gstr.mp9
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/highmemory/hiddenlinegraph.mp72
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/highmemory/mainmemtest.mp54
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/highmemory/par3Dplotexamples.mp149
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/borderframetest.mp28
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/conegetready.mp36
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/doitnow.mp33
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/electricpotential.mp151
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/emptylines.mp28
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/experimental.mp177
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/fieldlines.mp59
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/fis3prey.mp128
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/frustum.mp46
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_casq.mp84
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_freder.mp94
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/graphexample.mp16
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/lcurvature.mp114
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/mptoolcone.mp49
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/nembends.mp48
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/nemdirector.mp82
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquira.mp60
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquirapitch.mp69
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/nemuniax.mp61
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/pathernon.mp65
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/planpht.mp291
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/rigorcubo.mp36
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/rmnbob.mp45
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/sal.mp104
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/sfearschem.mp34
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/signalvertexSD.mp40
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/spherample.mp49
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/squareanglines.mp14
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/troncoconedef.mp54
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/twistnlc.mp54
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/twistroundbiax.mp62
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/twocyclestogether.mp113
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/repeated/twoupcones.mp51
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/anglinerigorouscircle.mp108
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/cartaxes.mp28
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/conicurv.mp94
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfacecentered.mp112
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfigures.mp44
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/cylimple.mp50
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/downloadicon.mp66
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/eemcsblabla.mp292
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/embroncordada.mp57
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/fakehole.mp59
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/featpostlogo.mp29
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/ffcbob.mp84
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/fieldlinesnorma.mp104
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/fis1prex.mp131
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/fis3prex.mp481
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/geombasic.mp82
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/geomfiguei.mp71
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/geommine.mp104
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/globe.mp32
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/halfcirclesfear.mp43
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/hexagonaltrimesh.mp25
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurface.mp153
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurfaces.mp65
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/inductionbob.mp116
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/joinedemptylines.mp47
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/kindofcube.mp81
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/labelconstruct.mp30
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/labelinspace.mp33
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/magneticflux.mp105
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/nembiaxi.mp64
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/nemsaddl.mp86
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/nsmetica.mp60
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/parafuso.mp100
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/pathofstraightline.mp29
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/photoreverse.mp242
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/polyhedr.mp191
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/positivecharge.mp28
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/resistcircuit.mp64
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscircle.mp49
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscone.mp36
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscSD.mp49
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscoptions.mp31
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousfearpath.mp66
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/rotatnlc.mp49
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/saturn.mp111
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/sharpraytrace.mp102
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/simplecar.mp25
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/simplecarparam.mp56
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/spatialhalfsfear.mp15
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/spltwiben.mp81
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/stageforthree.mp115
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/tangencypoint.mp38
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/tdarrow.mp26
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/thearchicon.mp59
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/thethreekindsofperspec.mp195
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/torus.mp297
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp88
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/triangulartrimesh.mp39
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/tropicalglobe.mp23
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/tshirtfig.mp39
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/tuftescatter.mp83
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/twistflat.mp55
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/twoholes.mp31
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/unperfection.mp59
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/unperfectionremoved.mp34
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/vanallenbelt.mp51
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/verygoodcone.mp28
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/xraycamera.mp117
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/cone.mp37
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/ellipticprism.mp39
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/intersection2D.mp46
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/kindofcube.mp57
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/newexperimental.mp157
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/perspec.mp77
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/planintersection.mp105
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/revolvers.mp112
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/tug04/tangency2D.mp56
115 files changed, 9039 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/bughunt.mp b/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/bughunt.mp
new file mode 100644
index 00000000000..2afa2bcd62d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/bughunt.mp
@@ -0,0 +1,57 @@
+% bughunt.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+%SphericalDistortion := true;
+%f := 0.3*(5,4,2);
+%Spread := 40;
+%ShiftV := (200,200);
+
+SphericalDistortion := false;
+f := 3.3*(5,4,2);
+Spread := 70;
+ShiftV := (250,250);
+
+beginfig(1);
+ color nalfa, gammacnt, vertex;
+ numeric altura, grids, radius, aux, i, numc, slope;
+
+ altura = 1;
+ radius = 0.3;
+ grids = 1;
+ numc = 8;
+ slope = 15;
+
+ for i=1 upto numc:
+ aux := (i-1-0.5*(numc-1))*grids;
+ gammacnt := (0,aux,0);
+ vertex := gammacnt+0.1*(f-gammacnt)+(0,0,aux/slope);
+ nalfa := vertex - gammacnt;
+ rigorousdisc( 0, true, gammacnt, radius, nalfa );
+ endfor;
+endfig;
+
+beginfig(2);
+ path cpath;
+ color vert;
+ numeric i;
+ f := (4,0,0.5);
+ vert = 0.5*(0,1,1);
+ cpath = rigorouscone(true, black, blue, 1, vert);
+% draw rp(vert);
+ draw cpath; show length cpath;
+ for i=0 upto length cpath:
+ dotlabel.top( decimal(i),point i of cpath);
+ endfor;
+% cpath := rigorouscircle( black, blue, 1);
+% draw cpath;
+% for i=0 upto length cpath:
+% dotlabel.bot( decimal(i),point i of cpath);
+% endfor;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/gstr.mp b/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/gstr.mp
new file mode 100644
index 00000000000..b0cf81a4674
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/bugtrack/gstr.mp
@@ -0,0 +1,9 @@
+
+beginfig(1);
+ boolean tb;
+ tb = true;
+ draw origin;
+ show bstr( tb );
+endfig;
+end.
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/highmemory/hiddenlinegraph.mp b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/hiddenlinegraph.mp
new file mode 100644
index 00000000000..efa5cea3727
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/hiddenlinegraph.mp
@@ -0,0 +1,72 @@
+% hiddenlinegraph.mp
+% L. Nobre G.
+% 2003
+% The application of the big nice trick to draw 3D hidden line surfaces
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+def zsurfaci( expr xc, yc ) =
+ begingroup
+ numeric zout;
+ zout = yc**4-xc*yc*(1-yc**2);
+ ( ( xc, yc, zout ) )
+ endgroup
+enddef;
+
+def zsurface( expr xc, yc ) =
+ ( xc, yc, cosd(xc*57)*cosd(yc*57)+4*mexp(-(xc**2+yc**2)*6.4) )
+enddef;
+
+def zsurfaca( expr xc, yc ) =
+ ( xc, yc, 1.5-0.2*xc )
+enddef;
+
+%f := (6,1,0);
+f := (5,1.5,3);
+Spread := 147;
+NF := 0;
+LightSource := (1,-1,2);
+
+beginfig(1);
+ numeric nx, ny, lowx, higx, lowy, higy,
+ facz, lowz, higz, base, topo;
+ path chair;
+ nx = 22;
+ ny = 22;
+ lowy = -7;
+ higy = 7;
+ lowx = -7;
+ higx = 7;
+ facz = 2;
+ lowz = -1;
+ higz = 5;
+% lowy = -2.5;
+% higy = 1;
+% lowx = 1.5;
+% higx = 3;
+% facz = 3;
+% lowz = -1.5;
+% higz = 1.5;
+ partrimesh( nx,ny,lowx,higx,lowy,higy,
+ lowx,higx,lowy,higy,lowz,higz,facz,zsurface);
+ partrimesh( nx,ny,lowx,higx,lowy,higy,
+ lowx,higx,lowy,higy,lowz,higz,facz,zsurfaca);
+ base = -1/facz;
+ topo = 1/facz;
+ chair = rp((-1,-1,base))--rp((1,-1,base))--rp((1,1,base))
+ --rp((-1,1,base))--rp((-1,-1,base))--rp((-1,-1,topo))
+ --rp((-1,1,topo))--rp((-1,1,base))--cycle;
+ draw chair;
+% fill_faces( withcolor blue );
+ draw_invisible( false, false, green, blue );
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/highmemory/mainmemtest.mp b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/mainmemtest.mp
new file mode 100644
index 00000000000..d4ab2a9e4cf
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/mainmemtest.mp
@@ -0,0 +1,54 @@
+% mainmemtest.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3D;
+
+beginfig(1);
+
+ f := (2,1,1);
+
+ Spread := 500;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, thetamin,
+ thetamax, thetastp, long, base;
+% It works with sizevec := (8,6,1);
+% with (9,6,1) and sharpraytrace it says
+% ! MetaPost capacity exceeded, sorry [main memory size=2199001].
+ sizevec := (7,6,1);
+ gridvec := (0.05,0.1,0.1);
+ thetamin := 55;
+ thetamax := 125;
+ long := 0.08;
+ base := 0.01;
+ thetastp := (thetamax-thetamin)/(X(sizevec)-1);
+ starpos := ( -0.5*X(gridvec)*(X(sizevec)-1) ,
+ -0.5*Y(gridvec)*(Y(sizevec)-1) ,
+ -0.5*Z(gridvec)*(Z(sizevec)-1) );
+ bordpos := starpos - 0.5*gridvec;
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ counter := 2;
+ for i=1 upto X(sizevec):
+ for j=1 upto Y(sizevec):
+ for k=1 upto Z(sizevec):
+ phi := 90;
+ theta := thetamin+(i-1)*thetastp;
+ currpos := starpos+( (i-1)*X(gridvec) ,
+ (j-1)*Y(gridvec) ,
+ (k-1)*Z(gridvec) );
+ generatedirface( counter, phi, theta, long, base, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ NF := decr(counter);
+ sharpraytrace;
+endfig;
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/highmemory/par3Dplotexamples.mp b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/par3Dplotexamples.mp
new file mode 100644
index 00000000000..6b05682918a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/highmemory/par3Dplotexamples.mp
@@ -0,0 +1,149 @@
+% J. Schwaiger with help of
+% FEATPOST and the macropackages
+% la3Dmacros.mp and hlr3Dmacros.mp
+% by L. Nobre G.
+% 2003
+
+% Figure (2) retouched in 2004 by L. Nobre G.
+
+verbatimtex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{euler}
+\usepackage{graphicx}
+\begin{document}
+etex
+
+% for trigonometric functions when angles are measured in rad
+%
+ def sinrad( expr t)=sind(t/3.145*180) enddef;
+ def cosrad( expr t)=cosd(t/3.145*180) enddef;
+
+ def parsurface( expr tc,sc )=
+ (%
+ (4 cosrad(tc) - sinrad(sc)*cosrad(tc),%
+ 4 sinrad(tc) - sinrad(sc)*sinrad(tc),%
+ cosrad(sc))%
+ )% A torus
+ enddef;
+
+ def parsurfacetwo( expr tc,sc )=
+ (%
+ (4+4cosrad(tc) - sinrad(sc)*cosrad(tc),%
+ cosrad(sc),
+ 4sinrad(tc) - sinrad(sc)*sinrad(tc)%
+ )%
+ )% Another torus
+ enddef;
+
+ def parsurfacethree( expr tc,sc )=
+% 0<=sc<=2pi,-2<=tc<=2
+%xmin=-1.4, xmax=1.4
+%ymin=-0.7, ymax=2
+%zmin=-2.5,zmax=2.5
+ (%
+ (1.414213562*cosrad(sc)*cosrad(tc)
+ -2*sinrad(sc)*sinrad(tc))/(2*(abs(tc) + 1)) + sinrad(tc),%
+ cosrad(tc) - (1.414213562*cosrad(sc)*sinrad(tc)
+ + 2*sinrad(sc)*cosrad(tc))/(2*(abs(tc) + 1)),%
+ tc - 2*cosrad(sc)/(2*(abs(tc) + 1))
+ )%
+% A space tube governed by a helix
+ enddef;
+
+def zsurface( expr xc, yc ) =
+ ( xc, yc, cosd(xc*57)*cosd(yc*57)+4*mexp(-(xc**2+yc**2)*6.4) )
+enddef;
+
+f:=(8,1.5,1.5);
+Spread := 127;
+
+
+beginfig(1);
+ numeric Ns, Nt, lows, higs, lowt, higt, lowx, highx, lowy, highy,
+ facz, lowz, higz, base, topo;
+ path chair;
+ % for torus
+ f:=(4,1.5,1.5);
+ Spread:=150;
+ Ns = 16;
+ Nt= 16;
+ lows := 3.145*0.25;
+ higs := 3.145*1.75;
+ lowt = -3.145;
+ higt = 3.145;
+ facz=1;
+ lowz = -5;
+ higz = 5;
+ lowx:=-5;
+ lowy:=-5;
+ higx:=10;
+ higy:=7;
+%
+ NF:=0; %Initialize number of faces;
+%
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurfacetwo );
+ lows := 3.145*0.5;
+ higs := 2.25*3.145; % new parameters and new surface
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurface );
+ base = -1/facz;
+ topo = 1/facz;
+ chair = rp((-1,-1,base))--rp((1,-1,base))--rp((1,1,base))
+ --rp((-1,1,base))--rp((-1,-1,base))--rp((-1,-1,topo))
+ --rp((-1,1,topo))--rp((-1,1,base))--cycle;
+ draw_invisible( false,true,(blue+0.5green),0.6white);
+ draw bbox currentpicture;
+endfig;
+
+beginfig(2);
+ numeric Ns, Nt, lows, higs, lowt, higt, lowx, highx, lowy, highy,
+ facz, lowz, higz, base, topo;
+ path chair;
+
+ f := (6,0.5,3);
+ Spread:=150;
+
+ Ns = 19;
+ Nt= 19;
+ lows := -3.145;
+ higs := 3.145;
+ lowt = -3.145;
+ higt = 3.145;
+ facz = 2;
+ lowz = -2;
+ higz = 2;
+ lowx:=-5;
+ lowy:=-5;
+ higx:=5;
+ higy:=5;
+ NF:=0; %Initialize number of faces;
+%
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurface );
+
+ nx := 27;
+ lowy := -7;
+ higy := 7;
+ lowx := -7;
+ higx := 7;
+ facz := 2;
+ lowz := -1;
+ higz := 5;
+ partrimesh( nx,nx,lowx,higx,lowy,higy,
+ lowx,higx,lowy,higy,lowz,higz,facz,zsurface);
+ base = -1/facz;
+ topo = 1/facz;
+ chair = rp((-1,-1,base))--rp((1,-1,base))--rp((1,1,base))
+ --rp((-1,1,base))--rp((-1,-1,base))--rp((-1,-1,topo))
+ --rp((-1,1,topo))--rp((-1,1,base))--cycle;
+ fill chair withcolor 0.9 blue+0.6white;
+ draw chair withcolor 0.1white ;
+ draw_invisible( false,false,(red+0.32blue),0.6white);
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/borderframetest.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/borderframetest.mp
new file mode 100644
index 00000000000..1c2331bdc17
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/borderframetest.mp
@@ -0,0 +1,28 @@
+% borderframetest.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(0);
+ Spread := 45;
+
+ numeric theframefrach, theframefracw, Shifts;
+ path theframebord;
+ Shifts := 105mm;
+ theframefrach = 0.2927;
+ theframefracw = 0.39;
+ z1 = Shifts*(1-theframefracw,1-theframefrach);
+ z2 = Shifts*(1+theframefracw,1-theframefrach);
+ z3 = Shifts*(1+theframefracw,1+theframefrach);
+ z4 = Shifts*(1-theframefracw,1+theframefrach);
+ theframebord = z1--z2--z3--z4--cycle;
+ show z1;
+ show z2;
+ show z3;
+ show z4;
+ draw theframebord withcolor background withpen pencircle scaled 0;
+ clip currentpicture to theframebord;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/conegetready.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/conegetready.mp
new file mode 100644
index 00000000000..17e7fea51b3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/conegetready.mp
@@ -0,0 +1,36 @@
+% conegetready.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric radiusin, fac, i, xcoor, ycoor, radc, numc, baz;
+ color refvec;
+ string rv, mrv, vgc, stra, strb, lrv;
+
+ f := (5,0.3,1.5);
+ Spread := 70;
+ radiusin = 0.3;
+ baz = 0.08;
+ fac = 3;
+ numc = 9;
+ radc = (fac-1)*radiusin*sind(180/numc);
+
+ i = 155;
+ xcoor := -radiusin*cosd(i);
+ ycoor := radiusin*sind(i);
+ refvec := (xcoor,-ycoor,baz);
+ rv := cstr( refvec );
+ mrv := cstr( -refvec );
+ lrv := cstr( (2*fac-1)*refvec );
+ vgc :="verygoodcone(true,fac*";
+ stra := vgc & rv & "," & mrv & "," & decimal(radc) & "," & rv & ")";
+ getready( stra, 0.5*(fac+1)*refvec );
+ strb := vgc & rv & "," & rv & "," & decimal(radc) & "," & lrv & ")";
+ getready( strb, 0.5*(3*fac-1)*refvec );
+ doitnow;
+ produce_vga_border;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/doitnow.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/doitnow.mp
new file mode 100644
index 00000000000..7cfec23a39d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/doitnow.mp
@@ -0,0 +1,33 @@
+% doitnow.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+f := 1.5*(1.5,0,1);
+Spread := 100;
+
+beginfig(1);
+ numeric stagelevel, holediam, outerdiam, stagemargin;
+ numeric numberofstagesidesquares, stagesidesize;
+ numeric centercoord;
+ color centerposdisc, centerpostorus, centerstage;
+ pickup pencircle scaled 3pt;
+ stagelevel = 0.2;
+ holediam = 0.6;
+ stagemargin = 0.2;
+ numberofstagesidesquares = 10;
+ centerstage = (-X(f),-Y(f),-stagelevel);
+ outerdiam = holediam+4*stagelevel;
+ stagesidesize = 2*( outerdiam + stagemargin );
+ centercoord = 0.3535*outerdiam;
+ HoriZon := -stagelevel;
+ centerpostorus = ( centercoord, -centercoord, 0 );
+ centerposdisc = ( -centercoord, centercoord, HoriZon );
+ getready("setthestage( numberofstagesidesquares, stagesidesize );",
+ centerstage);
+ getready("smoothtorus( centerpostorus, blue,0.5*holediam+stagelevel, stagelevel );",centerpostorus);
+ getready("rigorousdisc( 0.5*holediam, true, centerposdisc,0.5*outerdiam, 1.5*stagelevel*blue );",centerposdisc);
+ doitnow;
+endfig;
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/electricpotential.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/electricpotential.mp
new file mode 100644
index 00000000000..01caaab0c5e
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/electricpotential.mp
@@ -0,0 +1,151 @@
+% electricpotential.mp
+% L. Nobre G.
+% 2004
+% PAY ATTENTION: THESE FIGURES ARE INDEPENDANT. CONDUCTOR SURFACE POTENTIAL
+% CHANGES UNDER THE INFLUENCE OF EXTERNAL CHARGES.
+
+%input featpost3Dplus2D;
+
+f := 16*(4,1,1);
+Spread := 35;
+LightSource := 10*(4,-3,4);
+ActuC := 2;
+
+numeric potlim, cac, cbc, ccc, cdc;
+potlim = 2;
+cac = 2;
+cbc = -2;
+ccc = 4;
+cdc = 1.5;
+pair cap, cbp, ccp;
+cap = (-2,-4);
+ccp = (-2,4);
+cbp = (2,0);
+numeric np, ssize;
+np = 56;
+ssize = 18;
+
+def zi( expr xc, yc ) =
+ 0
+enddef;
+
+def za( expr xc, yc ) =
+ begingroup
+ save out;
+ numeric dist, out;
+ dist = abs( (xc,yc)-cap );
+ if abs(dist) < 0.005:
+ if cac<0:
+ out = -potlim;
+ else:
+ out = potlim;
+ fi;
+ else:
+ out = cac/dist;
+ fi;
+ if out > potlim:
+ out := potlim;
+ elseif out < -potlim:
+ out := -potlim;
+ fi;
+ (out)
+ endgroup
+enddef;
+
+def zb( expr xc, yc ) =
+ begingroup
+ save out;
+ numeric dist, out;
+ dist = abs( (xc,yc)-cbp );
+ if abs(dist) < 0.005:
+ if cbc<0:
+ out = -potlim;
+ else:
+ out = potlim;
+ fi;
+ else:
+ out = cbc/dist + za( xc, yc );
+ fi;
+ if out > potlim:
+ out := potlim;
+ elseif out < -potlim:
+ out := -potlim;
+ fi;
+ (out)
+ endgroup
+enddef;
+
+def zc( expr xc, yc ) =
+ begingroup
+ save out;
+ numeric dist, out;
+ dist = abs( (xc,yc)-ccp );
+ if abs(dist) < 0.005:
+ if ccc<0:
+ out = -potlim;
+ else:
+ out = potlim;
+ fi;
+ else:
+ out = ccc/dist + zb( xc, yc );
+ fi;
+ if out > potlim:
+ out := potlim;
+ elseif out < -potlim:
+ out := -potlim;
+ fi;
+ (out)
+ endgroup
+enddef;
+
+def zd( expr xc, yc ) =
+ begingroup
+ save out;
+ numeric dist, out, i, tmp;
+ pair poi;
+ tmp = 0;
+ for i=0 upto np:
+ poi := (i/np)[cap,ccp];
+ dist := abs( (xc,yc)-poi );
+ if abs(dist) < 0.005:
+ if cdc<0:
+ out := -potlim;
+ else:
+ out := potlim;
+ fi;
+ else:
+ out := cdc/dist/np;
+ fi;
+ tmp := tmp+out;
+ endfor;
+ tmp := tmp + zc( xc, yc );
+ if tmp > potlim:
+ tmp := potlim;
+ elseif tmp < -potlim:
+ tmp := -potlim;
+ fi;
+ (tmp)
+ endgroup
+enddef;
+
+beginfig(0);
+ hexagonaltrimesh( false, np, ssize, zi );
+endfig;
+
+beginfig(1);
+ hexagonaltrimesh( false, np, ssize, za );
+endfig;
+
+beginfig(2);
+ hexagonaltrimesh( false, np, ssize, zb );
+endfig;
+
+beginfig(3);
+ hexagonaltrimesh( false, np, ssize, zc );
+endfig;
+
+beginfig(4);
+ hexagonaltrimesh( false, np, ssize, zd );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/emptylines.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/emptylines.mp
new file mode 100644
index 00000000000..df8e02695dd
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/emptylines.mp
@@ -0,0 +1,28 @@
+% emptylines.mp
+% L. Nobre G.
+% 2001
+
+%input featpost3Dplus2D;
+
+
+def closec( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cblu, param;
+ par1 = 360;
+ par2 = 0.3;
+ param = 360*TheVal;
+ cred = par2*cosd( param );
+ cblu = par2*sind( param );
+ ( (cred,cblu,1) )
+ endgroup
+enddef;
+
+f := (4,3,2);
+Spread := 170;
+ShadowOn := true;
+
+beginfig(1);
+ emptyline( true, 1, black, 0.5background, 360, 0.88, 2, closec );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/experimental.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/experimental.mp
new file mode 100644
index 00000000000..106e7574f2a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/experimental.mp
@@ -0,0 +1,177 @@
+% experimental.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+%verbatimtex
+%\documentclass{article}
+%\usepackage{beton}
+%\usepackage{concmath}
+%\usepackage{ccfonts}
+%\begin{document}
+%etex
+
+verbatimtex
+\documentclass{article}
+\usepackage{palatino}
+\begin{document}
+etex
+
+f := (4.5,-6,5);
+
+beginfig(1);
+ numeric len[], ray[];
+ color axe[], pos[], fix[], lab[];
+ color reflabpos, reflabpoi, lincolor;
+ picture txt[], dashpatt;
+ numeric inclang, aberang, sampang, stepang;
+ numeric squside, sqlevel, ul, outermagpos;
+ numeric innerray, polesep, fracone, fracsam;
+ numeric labelscale;
+ path tmpath, aupath, copath;
+
+ pickup pencircle scaled 1.2pt;
+ dashpatt = evenly scaled 3;
+ inclang = 150;
+ aberang = 17;
+ sampang = 30;
+ stepang = 20;
+ ul = 0.1;
+ labelscale = 5;
+ outermagpos = 30ul;
+ squside = outermagpos;
+ sqlevel = -20ul;
+ polesep = 15ul;
+ fracone = 0.33;
+ fracsam = 0.86;
+ ray1 = 10ul;
+ ray2 = 6ul;
+ ray3 = 8ul;
+ ray4 = 1.5ul;
+ ray5 = 4ul;
+ ray6 = 3ul;
+ ray7 = 3.5ul;
+ ray8 = 2ul;
+ len3 = 7ul;
+ len4 = 20ul;
+ len5 = 3ul;
+ len7 = 3.5ul;
+ len8 = 7ul;
+ lincolor = 0.5background;
+
+ reflabpos = ( -squside, 0, -sqlevel );
+ reflabpoi = ( -squside, squside, -sqlevel );
+ V1 := (squside,squside,sqlevel);
+ V2 := (-squside,squside,sqlevel);
+ V3 := (-squside,-squside,sqlevel);
+ V4 := (squside,-squside,sqlevel);
+% makeface1(1,2,3,4);
+
+ len1 = (1-fracone)*(outermagpos-ray5-polesep);
+ pos1 = (-outermagpos,0,0);
+ rigorousdisc( 0, true, pos1, ray1, len1*(1,0,0) );
+
+ len2 = fracone*(outermagpos-ray5-polesep);
+ pos2 = (len1-outermagpos,0,0);
+ tmpath := goodcirclepath( pos2, (1,0,0), ray1 );
+ aupath := goodcirclepath( (-ray5-polesep,0,0), (1,0,0), ray2 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+ lab2 = reflabpos;
+ txt2 = thelabel.top( btex magneto etex scaled labelscale, rp( lab2 ) );
+ draw txt2;
+ fix2 = (-outermagpos+0.5len1,0,ray1);
+ draw llcorner txt2--lrcorner txt2--rp(fix2) withcolor lincolor;
+
+ axe3 = ( 0, cosd( inclang ), sind( inclang ) );
+ pos3 = -( len3 + len4 + len5 )*axe3;
+ rigorousdisc( 0, true, pos3, ray3, len3*axe3 );
+ lab3 = (1-fracone)*reflabpoi+fracone*V1;
+ txt3 = thelabel.rt( btex rotor etex scaled labelscale, rp( lab3 ) );
+ draw txt3;
+
+ axe4 = axe3;
+ pos4 = -( len4 + len5 )*axe4;
+ rigorousdisc( 0, true, pos4, ray4, len4*axe4 );
+
+ fix3 = pos4+fracsam*ray3*(0,cosd( inclang -90 ),sind( inclang -90 ));
+ draw lrcorner txt3--llcorner txt3--rp(fix3) withcolor lincolor;
+
+ axe5 = axe3;
+ pos5 = -( len5 )*axe5;
+ rigorousdisc( 0, true, pos5, ray5, len5*axe5 );
+ lab5 = (1-fracone)*reflabpoi+fracone*V2;
+ txt5 = thelabel.rt( btex porta-amostras etex scaled labelscale, rp( lab5 ) );
+ draw txt5;
+ fix5 = fracsam*ray5*(0,cosd( inclang -90 ),sind( inclang -90 ));
+ draw lrcorner txt5--llcorner txt5--rp(fix5) withcolor lincolor;
+
+ V5 := fracsam*ray5*( sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ V6 := fracsam*ray5*( -sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ V8 := fracsam*ray5*( sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ V7 := fracsam*ray5*( -sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ draw rp(V5)--rp(V6)--rp(V7)--rp(V8)--cycle;
+
+ axe6 = ( 0, cosd( inclang+aberang ), sind( inclang+aberang ) );
+ pos6 = ray1*axe6;
+ len6 = len4;
+ axe7 = ( 0, cosd( inclang-aberang ), sind( inclang-aberang ) );
+ pos7 = ( ray1 + 0.5len6 )*axe7;
+ draw rp(pos6)--rp((0,0,0))--rp(pos7) dashed dashpatt;
+ rigorousdisc( 0, true, pos6, ray6, len6*axe6 );
+ lab6 = fracone*reflabpos+(1-fracone)*V3;
+ txt6 = thelabel.lft( btex telemicrosc\'{o}pio etex scaled labelscale, rp( lab6 ) );
+ draw txt6;
+ fix6 = pos6+len6*axe6;
+ draw llcorner txt6--lrcorner txt6--rp(fix6) withcolor lincolor;
+
+ pos8 = pos7+len7*axe7;
+ tmpath := goodcirclepath( pos7, axe7, ray7 );
+ aupath := goodcirclepath( pos8, axe7, ray8 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+
+ axe8 = axe7;
+ rigorousdisc( 0, true, pos8, ray8, len8*axe8 );
+ lab8 = (1-fracone)*reflabpos+fracone*V3;
+ txt8 = thelabel.lft( btex l\^{a}mpada etex scaled labelscale, rp( lab8 ) );
+ draw txt8;
+ fix8 = pos8+len8*axe8;
+ draw llcorner txt8--lrcorner txt8--rp(fix8) withcolor lincolor;
+
+ len9 = len2;
+ pos9 = (ray5+polesep,0,0);
+ ray9 = ray2;
+ ray10 = ray1;
+ tmpath := goodcirclepath( pos9, (1,0,0), ray9 );
+ pos10 = pos9+len9*(1,0,0);
+ aupath := goodcirclepath( pos10, (1,0,0), ray10 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+
+ len10 = len1;
+ rigorousdisc( 0, true, pos10, ray10, len10*(1,0,0) );
+
+ produce_auto_scale;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/fieldlines.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/fieldlines.mp
new file mode 100644
index 00000000000..bcb018a0f7f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/fieldlines.mp
@@ -0,0 +1,59 @@
+% fieldlines.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 30;
+f := (10,0,0);
+
+color posa, posb;
+numeric kfac;
+posa = -5*green;
+posb = 5*green;
+kfac = 2.5;
+
+def vecfunc( expr posit )=
+ begingroup
+ save modula, modulb, field;
+ color field;
+ numeric modula, modulb;
+ modula = conorm( posit-posa );
+ modulb = conorm( posit-posb );
+ field = ( posit-posa )/(modula**3)+kfac*( posit-posb )/(modulb**3);
+ ( field )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric i, lena, lenb, numa, numb, sa, sb, diffstep, ray;
+ color stp;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 105;
+ lenb = 145;
+ numa = 72;
+ numb = 30;
+ diffstep = 1;
+ ray = 0.5;
+ sa = 36;
+ sb = 75;
+ for i=sa step numa until (360+sa):
+ stp := posa+( 0, ray*cosd(i), ray*sind(i) );
+ oneline := fieldlinepath( lena, stp, diffstep, vecfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ for i=sb step numb until (360+sb):
+ stp := posb+( 0, ray*cosd(i), ray*sind(i) );
+ oneline := fieldlinepath( lenb, stp, diffstep, vecfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(posa) withpen grossa;
+ draw rp(posb) withpen grossa;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/fis3prey.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/fis3prey.mp
new file mode 100644
index 00000000000..c1b32219687
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/fis3prey.mp
@@ -0,0 +1,128 @@
+% fis3prey.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ Spread := 50;
+ f := (4,6,3.5);
+ path malhacub, rama, ramb, ramc, malhatet;
+ pen grossa, nuclear, negat;
+ color p[];
+ numeric lengax, lscal, arrowmarg, arrowshift;
+ pair tx, ty, tz;
+ lengax = 0.7;
+ lscal = 2;
+ arrowshift = 0.85;
+ arrowmarg = 0.13;
+ grossa = pencircle scaled 2.7pt;
+ nuclear = pencircle scaled 2.1pt;
+ negat = pencircle scaled 1.8pt;
+ p1 = (1,1,-1);
+ p2 = (-1,1,-1);
+ p3 = (-1,-1,-1);
+ p4 = (1,-1,-1);
+ p5 = (1,1,1);
+ p6 = (-1,1,1);
+ p7 = (-1,-1,1);
+ p8 = (1,-1,1);
+
+ p0 = p2 + arrowshift*N((1,0,1)) + arrowmarg*N((-1,0,1));
+ p9 = p5 - arrowshift*N((1,0,1)) + arrowmarg*N((-1,0,1));
+
+ z1 = rp(p1);
+ z2 = rp(p2);
+ z3 = rp(p3);
+ z4 = rp(p4);
+ z5 = rp(p5);
+ z6 = rp(p6);
+ z7 = rp(p7);
+ z8 = rp(p8);
+
+ z0 = rp(p0);
+ z9 = rp(p9);
+
+ tx = rp( p1 - (lengax,0,0) );
+ ty = rp( p1 - (0,lengax,0) );
+ tz = rp( p1 + (0,0,lengax) );
+
+ malhacub = z1--z2--z3--z4--z1--z5--z6--z7--z8--z5;
+ malhatet = z2--z7--z4--z5--cycle;
+ rama = z2--z6;
+ ramb = z3--z7;
+ ramc = z4--z8;
+ drawoptions( dashed evenly );
+ draw malhacub;
+ draw rama;
+ draw ramb;
+ draw ramc;
+ drawoptions( withpen grossa );
+ draw malhatet;
+
+ drawarrow z1--tx withpen negat;
+ drawarrow z1--ty withpen negat;
+ drawarrow z1--tz withpen negat;
+ label.lrt(btex $x$ etex scaled lscal, tx);
+ label.llft(btex $y$ etex scaled lscal, ty);
+ label.lft(btex $z$ etex scaled lscal, tz);
+ drawarrow z0--z9 withpen negat;
+endfig;
+
+beginfig(2);
+ Spread := 50;
+ f := 2.3*(6,2,3.5);
+ numeric lang, cray, lpos, llen, smar;
+ path circ, rigcirc, lone, ltwo, carrpath;
+ pen pena, penb, penc;
+ pena = pencircle scaled 1.3mm;
+ penb = pencircle scaled 0.95mm;
+ penc = pencircle scaled 0.4mm;
+ color outcol, incol;
+ outcol = black;
+ incol = 0.876white;
+ lang = 30;
+ cray = 1;
+ lpos = 0.57;
+ llen = 2.2;
+ smar = 0.15;
+ circ = goodcirclepath( black, green, cray );
+ rigcirc = rigorouscircle( black, green, cray+smar );
+ carrpath = subpath (3.2,4.5) of rigcirc;
+ lone = rp((-lpos,llen*cosd(lang),llen*sind(lang)))
+ --rp(-(lpos,llen*cosd(lang),llen*sind(lang)));
+ ltwo = rp((lpos,-llen*cosd(lang),llen*sind(lang)))
+ --rp((lpos,llen*cosd(lang),-llen*sind(lang)));
+ drawarrow carrpath withpen penc withcolor outcol;
+ draw circ withpen pena withcolor outcol;
+ draw circ withpen penb withcolor incol;
+ draw rp((-cray,0,0))--rp((-lpos,0,0)) dashed evenly;
+ draw lone withpen pena withcolor outcol;
+ draw lone withpen penb withcolor incol;
+ draw rp((lpos,0,0))--rp((-lpos,0,0)) dashed evenly;
+ draw rp((0,0,-cray))--rp((0,0,cray)) dashed evenly;
+ draw ltwo withpen pena withcolor outcol;
+ draw ltwo withpen penb withcolor incol;
+ draw rp((cray,0,0))--rp((lpos,0,0)) dashed evenly;
+ draw subpath (1,15) of circ withpen pena withcolor outcol;
+ draw subpath (0,16) of circ withpen penb withcolor incol;
+
+
+
+% label.top( btex $+$ etex, point 3 of rigcirc );
+
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/frustum.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/frustum.mp
new file mode 100644
index 00000000000..90da3d74440
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/frustum.mp
@@ -0,0 +1,46 @@
+% frustum.mp
+% L. Nobre G.
+% IYP (2005)
+
+verbatimtex
+\documentclass{article}
+\begin{document}
+{\sffamily
+etex
+
+beginfig(1);
+% f := (5,3,4);
+ f := (5,3,0.4);
+% f := (5,3,-0.4);
+ numeric labscal;
+ picture labsa, labba, labsb, labd, labc;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ labsa = btex $\vec{S}_1$ etex scaled labscal;
+ labsb = btex $\vec{S}_2$ etex scaled labscal;
+ labba = btex $\vec{B}_1$ etex scaled labscal;
+ labd= btex $D$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ whatisthis( black, 0.5red, green, 0.85, 0.8 );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ drawdblarrow rp(black)--rp(0.85blue);
+ label.rt( labd, rp(0.4blue) );
+ drawarrow rp(black)--rp(0.5red);
+ label.ulft( labsa, rp(0.25red) );
+ drawarrow rp(black)--rp(green);
+ label.top( labba, rp((0,0.5,0)) );
+ drawarrow rp(0.85blue)--rp(0.8*0.5*red+0.85blue);
+ label.ulft( labsb, rp(0.2red+0.85blue) );
+ dotlabel.bot( labc, rp(black) );
+endfig;
+
+verbatimtex
+}
+\end{document}
+etex
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_casq.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_casq.mp
new file mode 100644
index 00000000000..bdc52c58d89
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_casq.mp
@@ -0,0 +1,84 @@
+% geom_casq.mp
+% L. Nobre G.
+% 1999
+
+%input featpost3Dplus2D;
+
+%input la3Dmacros;
+%input hlr3Dmacros;
+%input plan2Dmacros;
+%
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+
+ f := (1.7,1.2,1);
+
+ Spread := 150;
+
+ color gridvec, sizevec, currpos, starpos, bordpos, orig, axxc, ayyc, azzc;
+ numeric alphamax, long, base, thetamax;
+ axxc = (0.8,0,0);
+ ayyc = (0,0.7,0);
+ azzc = (0,0,0.4);
+ sizevec := (11,9,9);
+ gridvec := (0.1,0.1,0.1);
+ thetamax := 50;
+ alphamax := 70;
+ long := 0.65;
+ base := 0.3;
+ starpos := ( -0.5*X(gridvec)*(X(sizevec)-1) ,
+ -0.5*Y(gridvec)*(Y(sizevec)-1) ,
+ -0.5*Z(gridvec)*(Z(sizevec)-1) );
+ bordpos := starpos - 0.5*gridvec;
+ orig := starpos + 0.5*gridvec + (0.05,0,-0.1);
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ npf2 := 4;
+ F2p1 := (X(bordpos),Y(bordpos), -Z(bordpos));
+ F2p2 := (X(bordpos),-Y(bordpos), -Z(bordpos));
+ F2p3 := (-X(bordpos),-Y(bordpos), -Z(bordpos));
+ F2p4 := (-X(bordpos),Y(bordpos), -Z(bordpos));
+ NF := 2;
+
+ pickup pencircle scaled 1pt;
+ drawarrow rp(orig)..rp(orig+axxc);
+ drawarrow rp(orig)..rp(orig+ayyc);
+ drawarrow rp(orig)..rp(orig+azzc);
+ label.bot(btex z etex,rp(orig+axxc));
+ label.bot(btex x etex,rp(orig+ayyc));
+ label.lft(btex y etex,rp(orig+azzc));
+ pickup pencircle scaled 1.5pt;
+
+ starpos := (base,0,0)+orig;
+ drawarrow rp(orig)..rp(starpos);
+ label.bot(btex $\vec{n}_0$ etex,rp(starpos));
+
+ currpos := starpos;
+ starpos := long*(cosd(alphamax),sind(alphamax),0)+orig;
+ drawarrow rp(orig)..rp(starpos);
+ label.bot(btex $\vec{H}$ etex,rp(starpos));
+ angline(starpos,currpos,orig,0.55,btex $\alpha$ etex,bot);
+
+ starpos := base*(cosd(thetamax),sind(thetamax),0)+orig;
+ drawarrow rp(orig)..rp(starpos);
+ label.bot(btex $\vec{n}$ etex,rp(starpos));
+ angline(starpos,currpos,orig,0.2,btex $\theta$ etex,bot);
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_freder.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_freder.mp
new file mode 100644
index 00000000000..9a834001aab
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/geom_freder.mp
@@ -0,0 +1,94 @@
+% geom_freder.mp
+% L. Nobre G.
+% 2000
+
+%input featpost3Dplus2D;
+
+verbatimtex \documentclass{article} \usepackage{beton} \usepackage{concmath} \usepackage{ccfonts} \begin{document} etex
+
+beginfig(1);
+
+ f := (1.7,1.2,1);
+
+ Spread := 250;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, long, base, thetamax;
+ path closingface;
+ sizevec := (11,9,7);
+ gridvec := (0.1,0.1,0.1);
+ thetamax := 50;
+ long := 0.08;
+ base := 0.1;
+ starpos := ( -0.5*X(gridvec)*(X(sizevec)-1) ,
+ -0.5*Y(gridvec)*(Y(sizevec)-1) ,
+ -0.5*Z(gridvec)*(Z(sizevec)-1) );
+ bordpos := starpos - 0.5*gridvec;
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ npf2 := 4;
+ F2p1 := (X(bordpos),Y(bordpos), -Z(bordpos));
+ F2p2 := (X(bordpos),-Y(bordpos), -Z(bordpos));
+ F2p3 := (-X(bordpos),-Y(bordpos), -Z(bordpos));
+ F2p4 := (-X(bordpos),Y(bordpos), -Z(bordpos));
+ NF := 2;
+ draw facepath(1);
+ counter := 1;
+ for i= X(sizevec) upto X(sizevec):
+ for j=1 upto Y(sizevec):
+ for k=1 upto Z(sizevec):
+ phi := 0;
+ theta := 0;
+ currpos := starpos+( (i-1)*X(gridvec) ,
+ (j-1)*Y(gridvec) ,
+ (k-1)*Z(gridvec) );
+ phi := thetamax*cosd(90*Z(currpos)/abs(Z(starpos)));
+ theta := 90+thetamax*cosd(90*Z(currpos)/abs(Z(starpos)));
+ generatedirline( counter, phi, theta, long, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ for i=1 upto X(sizevec)-1:
+ for j=Y(sizevec) upto Y(sizevec):
+ for k=1 upto Z(sizevec):
+ phi := 0;
+ theta := 0;
+ currpos := starpos+( (i-1)*X(gridvec) ,
+ (j-1)*Y(gridvec) ,
+ (k-1)*Z(gridvec) );
+ phi := thetamax*cosd(90*Z(currpos)/abs(Z(starpos)));
+ theta := 90+thetamax*cosd(90*Z(currpos)/abs(Z(starpos)));
+ generatedirline( counter, phi, theta, long, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ NL := decr(counter);
+ director_invisible( true, base, false );
+ closingface = facepath(2);
+ fill closingface withcolor background;
+ draw closingface;
+ pickup pencircle scaled 1pt;
+ currpos := (-X(bordpos)+X(gridvec),Y(bordpos), Z(bordpos));
+ starpos := (-X(bordpos)+X(gridvec),Y(bordpos)+4*Y(gridvec), Z(bordpos));
+ drawarrow rp(currpos)..rp(starpos);
+ label.bot(btex $y$ etex,rp(starpos));
+ currpos := (-X(bordpos)+X(gridvec),Y(bordpos), Z(bordpos));
+ starpos := (-X(bordpos)+X(gridvec),Y(bordpos), Z(bordpos)+4*Z(gridvec));
+ drawarrow rp(currpos)..rp(starpos);
+ label.lft(btex $z$ etex,rp(starpos));
+ currpos := (X(bordpos),-Y(bordpos)+Y(gridvec), Z(bordpos));
+ starpos := (X(bordpos)+4*X(gridvec),-Y(bordpos)+Y(gridvec), Z(bordpos));
+ drawarrow rp(currpos)..rp(starpos);
+ label.bot(btex $x$ etex,rp(starpos));
+
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/graphexample.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/graphexample.mp
new file mode 100644
index 00000000000..6591ed5d0f9
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/graphexample.mp
@@ -0,0 +1,16 @@
+% graphexample.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+input mp-tool;
+
+beginfig(1);
+ path thezigzag;
+ thezigzag = zigzagfrontier( origin, (200,200), 17,
+ 4, 20, 16, 12, blue, background );
+ draw thezigzag;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/lcurvature.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/lcurvature.mp
new file mode 100644
index 00000000000..ca6d5670457
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/lcurvature.mp
@@ -0,0 +1,114 @@
+% lcurvature.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ f := (5,3,4);
+ Spread := 70;
+ numeric gridstep, anglstep, cylength, cyradius, numcylis;
+ numeric i, j, curcoord, vcx, vcy, vcz, curangle, curnorma;
+ numeric major, othcoord, othangle;
+ color base, lenvec;
+ cylength := 0.1;
+ cyradius := 0.3;
+ gridstep := cyradius*2.2;
+ anglstep := 10;
+ numcylis := 5;
+ major := 0.35*gridstep*numcylis;
+ for i=1 upto numcylis: % bend
+ curnorma := i-0.5*(numcylis+1);
+ curangle := curnorma*anglstep;
+ vcx := cylength*cosd(curangle);
+ vcy := 0;
+ vcz := cylength*sind(curangle);
+ base := major*(sind(curangle),-1,-cosd(curangle));
+ lenvec := (vcx,vcy,vcz);
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ for i=1 upto numcylis: % twist
+ curnorma := i-0.5*(numcylis+1);
+ curcoord := curnorma*gridstep;
+ curangle := curnorma*anglstep;
+ vcx := 0;
+ vcy := cylength*sind(curangle);
+ vcz := cylength*cosd(curangle);
+ base := (curcoord,-vcy/2-major,-vcz/2+major);
+ lenvec := (vcx,vcy,vcz);
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ for i=1 upto numcylis: % splay
+ curnorma := i-0.5*(numcylis+1);
+ curcoord := curnorma*gridstep;
+ curangle := curnorma*anglstep;
+ vcx := cylength*sind(curangle);
+ vcy := 0;
+ vcz := -cylength*cosd(curangle);
+ lenvec := (vcx,vcy,vcz);
+ for j=1 upto numcylis:
+ othcoord := (j-0.5*(numcylis+1))*gridstep;
+ base := major*(0,1,-cosd(curangle));
+ base := base +(curcoord,othcoord,0);
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ endfor;
+ for i=1 upto numcylis: % saddle
+ curnorma := i-0.5*(numcylis+1);
+ curcoord := curnorma*gridstep;
+ curangle := curnorma*anglstep;
+ vcx := cylength*sind(curangle);
+ for j=1 upto numcylis:
+ othcoord := (j-0.5*(numcylis+1))*gridstep;
+ othangle := (j-0.5*(numcylis+1))*anglstep;
+ vcy := -cylength*sind(othangle);
+ vcz := -cylength*cosd(curangle)*cosd(othangle);
+ base := major*(0,1,1-cosd(curangle)+cosd(othangle));
+ base := base + (curcoord,othcoord,0);
+ lenvec := (vcx,vcy,vcz);
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ endfor;
+endfig;
+
+beginfig(2);
+ f := (5,3,4);
+ Spread := 70;
+ numeric gridstep, cylength, cyradius, numcylis;
+ numeric i, j, curcoord, curangle, curnorma;
+ numeric othcoord, othangle, zcoord, coef, othnorma;
+ color base, lenvec;
+ cylength := 0.1;
+ cyradius := 0.3;
+ gridstep := cyradius*2.2;
+ numcylis := 5;
+ coef := 0.32;
+ for i=1 upto numcylis: % splay
+ curnorma := i-0.5*(numcylis+1);
+ curcoord := curnorma*gridstep;
+ curangle := -curcoord*2*coef;
+ for j=1 upto numcylis:
+ othnorma := j-0.5*(numcylis+1);
+ othcoord := othnorma*gridstep;
+ othangle := -othcoord*2*coef;
+ zcoord := -coef*(othcoord**2+curcoord**2);
+ base := (curcoord,othcoord,zcoord);
+ lenvec := cylength*N((-curangle,-othangle,1));
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ endfor;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/mptoolcone.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/mptoolcone.mp
new file mode 100644
index 00000000000..4053632efb5
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/mptoolcone.mp
@@ -0,0 +1,49 @@
+% mptoolcone.mp
+% L. Nobre G.
+% Y2K
+
+%input featpost3Dplus2D;
+
+input mp-tool;
+
+ defaultscale := 1.1;
+% defaultfont := "putr8r";
+ defaultfont := "bchr8r";
+
+beginfig(0);
+ color orig, axxc, ayyc, azzc;
+ color nalfa, gammacnt;
+ path gamma, cone, mybox;
+ numeric theta, radius, xxsize, yysize, zzsize;
+ picture mypict;
+
+ f := (3,4,2);
+ Spread := 100;
+ xxsize = 0.8;
+ yysize = 0.8;
+ zzsize = 1.0;
+ theta = 25;
+
+ orig = (0,0,0);
+ mypict = thelabel("Texto com acentuação.",rp(orig));
+ mybox = bbox mypict;
+ draw mypict;
+ draw mybox;
+ axxc = (xxsize,0,0);
+ ayyc = (0,yysize,0);
+ azzc = (0,0,zzsize);
+ nalfa = (0,sind(theta),cosd(theta));
+ gammacnt = cosd(theta)*cosd(theta)*nalfa;
+ radius := cosd(theta)*sind(theta);
+ gamma = rigorouscircle( gammacnt, nalfa, radius );
+ cone = rigorouscone(true, gammacnt, nalfa, radius, (xxsize,yysize,0) );
+ draw gamma dashed evenly;
+ draw cone;
+ drawarrow rp(orig)..rp(axxc);
+ drawarrow rp(orig)..rp(ayyc);
+ drawarrow rp(orig)..rp(azzc);
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/nembends.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nembends.mp
new file mode 100644
index 00000000000..5900e88d187
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nembends.mp
@@ -0,0 +1,48 @@
+% nembends.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+%input mp-tool;
+
+beginfig(1);
+ f := 2*(5,3,4);
+ Spread := 70;
+
+ numeric hsdev, basestep, basxstep, basesdev;
+ numeric i, j, k, coesdev, cylength, cyradius, basen;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, aone;
+ numeric atwo, zcurr, coestep, angsdev, basxsdev;
+ color lenvec, currpos;
+
+
+ coestep := -0.15;
+ cylength := 0.6;
+ cyradius := 0.1;
+ basen := 3;
+ basestep := cylength*1.6;
+ basxstep := cyradius*4;
+ basesdev := basestep*0.001;
+ basxsdev := basxstep*0.001;
+ hsdev := 0.005;
+ coesdev := 0.001;
+ angsdev := 0.02;
+ for i=-basen upto basen:
+ for j=-basen upto basen:
+ xcurr := i*basxstep + basxsdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ zcurr := ycurr**2*coestep + coesdev*normaldeviate;
+ aone := angsdev*normaldeviate;
+ atwo :=angle(1,ycurr*2*coestep)+angsdev*normaldeviate;
+ vcz := cosd( aone )*sind( atwo );
+ vcy := cosd( aone )*cosd( atwo );
+ vcx := sind( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+ rigorousdisc(0,true,currpos-0.5*lenvec,cyradius,lenvec);
+ endfor;
+ endfor;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemdirector.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemdirector.mp
new file mode 100644
index 00000000000..4c1d88fe095
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemdirector.mp
@@ -0,0 +1,82 @@
+% nemdirector.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+%\usepackage{mathpazo}
+\begin{document}
+etex
+
+beginfig(1);
+ f := 2*(5,3,4);
+ Spread := 70;
+
+ numeric cylength, cyradius, zoneradi, zoneleng;
+ numeric i, angsdev, halfnum, directlen, arrthick;
+ numeric vcx, vcy, vcz, xcurr, ycurr, thickfact;
+ numeric atwo, zcurr, aone, apos;
+ color lenvec, currpos, tippos;
+ path arrpath;
+ picture tmppict;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nu
+ cylength := 0.45;
+ cyradius := 0.1;
+ zoneradi := 2;
+ zoneleng := 4;
+ directlen := 5.6;
+ angsdev := 12;
+ halfnum := 130;
+ thickfact := 5;
+ arrthick := Spread*ps( (0,0,0), thickfact );
+ tippos := (0,0,0.5*directlen);
+ arrpath := rp(-tippos)--rp(tippos);
+ ahlength := 3*arrthick;
+ ahangle := 40;
+ for i=1 upto halfnum:
+ zcurr := -0.5*zoneleng+uniformdeviate( zoneleng );
+ apos := uniformdeviate( 180 );
+ xcurr := -zoneradi*cosd( apos )*uniformdeviate( 1 );
+ ycurr := zoneradi*sind( apos )*uniformdeviate( 1 );
+ aone := uniformdeviate( 360 );
+ atwo := angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone );
+ vcx := sind( atwo )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+ generatedirline( i, aone, 90-atwo, cylength, currpos );
+ endfor;
+ NL:= halfnum;
+ director_invisible( true, thickfact, false );
+ drawarrow arrpath withpen pencircle scaled arrthick;
+ for i=1 upto halfnum:
+ zcurr := -0.5*zoneleng+uniformdeviate( zoneleng );
+ apos := uniformdeviate( 180 );
+ xcurr := zoneradi*cosd( apos )*uniformdeviate( 1 );
+ ycurr := zoneradi*sind( apos )*uniformdeviate( 1 );
+ aone := uniformdeviate( 360 );
+ atwo := angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone );
+ vcx := sind( atwo )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+ generatedirline( i, aone, 90-atwo, cylength, currpos );
+ endfor;
+ NL:= halfnum;
+ director_invisible( true, thickfact, false );
+ label.ulft(btex $\vec{n}$ etex scaled 8.5 rotated 90, rp(tippos) );
+ tmppict := currentpicture rotated -90;
+ currentpicture := nullpicture;
+ draw tmppict;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquira.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquira.mp
new file mode 100644
index 00000000000..41caf4578a6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquira.mp
@@ -0,0 +1,60 @@
+% nemquira.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+ f := 7*(1,2,1);
+ Spread := 70;
+
+ numeric hstep, hmax, hsdev, basestep, basemax, basesdev;
+ numeric i, j, k, angsdev, cylength, cyradius, basen, hn;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, hbase, aone;
+ numeric atwo, zcurr, angstep, counter;
+ color lenvec, currpos;
+
+ angstep := 20;
+ cylength := 0.45;
+ cyradius := 0.1;
+ basen := 4.5;
+ hn := 1;
+ basestep := cylength*1.37;
+ hstep := basestep;
+ basesdev := basestep*0.05;
+ hsdev := basesdev;
+ hbase := -0.8;
+ angsdev := 4;
+
+ basemax := basen*basestep;
+ hmax := hn*hstep;
+ counter := 0;
+ for i=-basen upto basen:
+ for j=-basen upto basen:
+ hcurr := hbase;
+ forever:
+ exitunless hcurr < hmax+hbase;
+ hcurr := hcurr + hstep;
+ zcurr := hcurr + hsdev*normaldeviate;
+ xcurr := i*basestep + basesdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ aone := angsdev*normaldeviate;
+ atwo := j*angstep + angsdev*normaldeviate;
+ vcz := sind( atwo+90 );
+ vcy := cosd( atwo+90 )*sind( aone );
+ vcx := cosd( atwo+90 )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+% rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ counter := incr(counter);
+ generatedirline( counter, aone, 90+atwo, cylength, currpos );
+ endfor;
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( true, 5, false );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquirapitch.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquirapitch.mp
new file mode 100644
index 00000000000..d29f0ffeb10
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemquirapitch.mp
@@ -0,0 +1,69 @@
+% nemquirapitch.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ f := 7*(1,2,1);
+ Spread := 70;
+ ahlength := 3mm;
+ ahangle := 48;
+
+ numeric hsdev, basestep, basemax, basesdev, xpos;
+ numeric i, j, angsdev, cylength, cyradius, basen;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, aone;
+ numeric atwo, zcurr, angstep, counter, linelen;
+ color lenvec, currpos;
+
+ angstep := 20;
+ cylength := 0.45;
+ cyradius := 0.1;
+ basen := 4.5;
+ basestep := cylength*1.37;
+ basesdev := basestep*0.05;
+ hsdev := basesdev;
+ angsdev := 4;
+ linelen := cylength;
+
+ basemax := basen*basestep;
+ xpos := -(basen+1)*basestep;
+ draw rp((-xpos-0.5*cylength,-basemax,0))--rp((-xpos+0.5*cylength,-basemax,0));
+ draw rp((-xpos-0.5*cylength,basemax,0))--rp((-xpos+0.5*cylength,basemax,0));
+ drawdblarrow rp((-xpos,-basemax,0))--rp((-xpos,basemax,0));
+ label.urt( btex $\frac{p}{2}$ etex scaled 2.5, rp((-xpos,0,0)) );
+ counter := 0;
+ for i=-basen upto basen:
+ for j=-basen upto basen:
+ zcurr := hsdev*normaldeviate;
+ xcurr := i*basestep + basesdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ aone := angsdev*normaldeviate;
+ atwo := j*angstep + angsdev*normaldeviate;
+ vcz := sind( atwo+90 );
+ vcy := cosd( atwo+90 )*sind( aone );
+ vcx := cosd( atwo+90 )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+% rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ counter := incr(counter);
+ generatedirline( counter, aone, 90+atwo, cylength, currpos );
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( true, 5, false );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemuniax.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemuniax.mp
new file mode 100644
index 00000000000..b2ebec11c8f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/nemuniax.mp
@@ -0,0 +1,61 @@
+% nemuniax.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ f := 2*(5,3,4);
+ Spread := 70;
+
+ numeric hstep, hmax, hsdev, basestep, basemax, basesdev;
+ numeric i, j, k, angsdev, cylength, cyradius, basen, hn;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, hbase, aone;
+ numeric atwo, zcurr, counter;
+ color lenvec, currpos;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nu
+ cylength := 0.6;
+ cyradius := 0.1;
+ basen := 12;
+ hn := 5;
+ basestep := cyradius*3.1;
+ hstep := cylength*1.5;
+ basesdev := cyradius*0.1;
+ hsdev := hstep*0.2;
+ hbase := -0.8;
+ angsdev := 12;
+
+ basemax := basen*basestep;
+ hmax := hn*hstep;
+ counter := 0;
+ for i=1 upto basen:
+ for j=1 upto basen:
+ hcurr := hbase;
+ forever:
+ exitunless hcurr < hmax+hbase;
+ hcurr := hcurr + hstep;
+ zcurr := hcurr + hsdev*normaldeviate;
+ xcurr := i*basestep + basesdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ aone := uniformdeviate( 360 );
+ atwo := angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone );
+ vcx := sind( atwo )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+% rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ counter := incr( counter );
+ generatedirline( counter, aone, 90-atwo, cylength, currpos );
+% generateonebiax( counter, aone, 90-atwo, cylength,
+% -60, 0.25*cylength, currpos );
+ endfor;
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( true, 5, false );
+% director_invisible( false, 5, true );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/pathernon.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/pathernon.mp
new file mode 100644
index 00000000000..8b3d8b56140
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/pathernon.mp
@@ -0,0 +1,65 @@
+% pathernon.mp
+% L. Nobre G.
+% 2004
+
+beginfig(0);
+ f := (4.8,3,3.65);
+ viewcentr := black;
+ Spread := 50;
+ horiZon := 0;
+ ShadowOn := false;
+ LightSource := (1,-1,7);
+ SphericalDistortion := true;
+ OverRidePolyhedricColor := true;
+ numeric side, coluheight, blocheight, roofheight, coluray, fact;
+ numeric acroside, acronum, auxa, raya, rayb , poshemi, lena, lenb;
+ color roofcenter, ba, bb, bc, bd, coluvec, colucen, auxb, auxc, auxd;
+ side = 1;
+ roofheight = 0.1;
+ coluheight = 0.7;
+ acroside = 4;
+ acronum = 20;
+ coluray = 0.06;
+ blocheight = 0.1;
+ poshemi = 0.25*side;
+ raya = 0.08;
+ rayb = 0.12;
+ lena = 0.13;
+ lenb = 0.26;
+ fact = 1.3;
+ auxa = 0.5*side-coluray;
+ coluvec = blue*coluheight;
+ colucen = 0.5*coluvec;
+ auxc = (0,-poshemi,0);
+ auxd = (0,-poshemi,raya+rayb);
+ setthestage( acronum, acroside );
+ V1 := (0.5*side,-0.5*side,coluheight+blocheight);
+ V2 := (0.5*side,0.5*side,coluheight+blocheight);
+ V3 := (-0.5*side,0.5*side,coluheight+blocheight);
+ V4 := (-0.5*side,-0.5*side,coluheight+blocheight);
+ V5 := (0,-0.5*side,coluheight+roofheight+blocheight);
+ V6 := (0,0.5*side,coluheight+roofheight+blocheight);
+ makeface1(1,4,5);
+ makeface2(1,2,6,5);
+ makeface3(2,3,6);
+ makeface4(3,4,5,6);
+ ba = (auxa,-auxa,0);
+ bb = (auxa,auxa,0);
+ bc = (-auxa,auxa,0);
+ bd = (-auxa,-auxa,0);
+ roofcenter = (V1+V2+V3+V4+V5+V6)/6;
+ auxb = roofcenter-blue*blocheight;
+ V7 := (-0.5*side,-0.5*side,coluheight);
+ getready( "draw_invisible( false, false, white, black )", roofcenter );
+ getready( "rigorousdisc( 0, true, ba, coluray, coluvec )", ba+colucen);
+ getready( "rigorousdisc( 0, true, bb, coluray, coluvec )", bb+colucen);
+ getready( "rigorousdisc( 0, true, bc, coluray, coluvec )", bc+colucen);
+ getready( "rigorousdisc( 0, true, bd, coluray, coluvec )", bd+colucen);
+ getready("kindofcube(false,true,V7,0,0,0,side,side,blocheight)",auxb);
+ getready( "whatisthis(auxc,lenb*red,lena*green,raya,fact)", auxc );
+ getready( "spatialhalfsfear( auxd, blue, rayb )", auxd );
+ doitnow;
+ produce_vga_border;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/planpht.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/planpht.mp
new file mode 100644
index 00000000000..dac34577eff
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/planpht.mp
@@ -0,0 +1,291 @@
+% planpht.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% Planification wise 3D figures
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1); % phtpbq
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Definition of the 3D-figure
+ V1 := (1,0,0);
+ V2 := (0,1,0);
+ V5 := (0,0,1);
+ V3 := (-1,0,0);
+ V4 := (0,-1,0);
+ makeface1(1,2,3,4);
+ makeface2(1,2,5);
+ makeface3(2,3,5);
+ makeface4(3,4,5);
+ makeface5(4,1,5);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ f := (3,5,4);
+ Spread := 50;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+endfig;
+
+beginfig(2); % phtdpbp
+ numeric altura, raio, xp, xs, yp, ys;
+ altura = 0.5257311;
+ raio = 0.8506508;
+ yp = 0.80901699;
+ ys = 0.5;
+ xp = 0.2628655;
+ xs = -0.6881909;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Definition of the 3D-figure
+ V1 := (raio,0,0);
+ V2 := (xp,yp,0);
+ V3 := (xs,ys,0);
+ V4 := (xs,-ys,0);
+ V5 := (xp,-yp,0);
+ V6 := (0,0,altura);
+ V7 := (0,0,-altura);
+ makeface1(1,2,6);
+ makeface2(5,1,6);
+ makeface3(2,3,6);
+ makeface4(3,4,6);
+ makeface5(4,5,6);
+ makeface6(1,2,7);
+ makeface7(5,1,7);
+ makeface8(2,3,7);
+ makeface9(3,4,7);
+ makeface10(4,5,7);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ f := (3,5,1.8);
+ Spread := 50;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+endfig;
+
+beginfig(3); % phtcubo eps
+ defaultscale := 1;
+ defaultfont := "ccr10";
+ V1 := (1,1,1);
+ V2 := (-1,1,1);
+ V3 := (-1,-1,1);
+ V4 := (1,-1,1);
+ V5 := (1,1,-1);
+ V6 := (-1,1,-1);
+ V7 := (-1,-1,-1);
+ V8 := (1,-1,-1);
+ makeface1(1,2,3,4);
+ makeface2(5,6,7,8);
+ makeface3(1,2,6,5);
+ makeface4(2,3,7,6);
+ makeface5(3,4,8,7);
+ makeface6(4,1,5,8);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ f := (3,5,3);
+ Spread := 50;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+ label.lft("A", rp(V8) );
+ label.top("B", rp(V1) );
+ label.top("C", rp(V3) );
+ label.lft("D", rp(V4) );
+ label.rt("E", rp(V2) );
+ label.rt("F", rp(V6) );
+endfig;
+
+beginfig(4); % phtptq
+ numeric high, low;
+ high = sqrt(2);
+ low = sqrt(2)-1.6818;
+ V1 := (1,1,high);
+ V2 := (-1,1,high);
+ V3 := (-1,-1,high);
+ V4 := (1,-1,high);
+ V5 := (high,0,low);
+ V6 := (0,high,low);
+ V7 := (-high,0,low);
+ V8 := (0,-high,low);
+ V9 := (0,0,0);
+ makeface1(5,6,7,8);
+ makeface2(6,1,2);
+ makeface3(7,2,3);
+ makeface4(8,3,4);
+ makeface5(5,4,1);
+ makeface6(5,6,1);
+ makeface7(6,7,2);
+ makeface8(7,8,3);
+ makeface9(8,5,4);
+ makeface10(9,1,2);
+ makeface11(9,2,3);
+ makeface12(9,3,4);
+ makeface13(9,4,1);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ f := (2,6,5);
+ Spread := 50;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+endfig;
+
+beginfig(5); % phtnonrec
+ numeric tro;
+ tro = 2;
+ V1 := (tro,0,0);
+ V2 := (0,tro,0);
+ V3 := (-tro,0,0);
+ V4 := (0,-tro,0);
+ V5 := (1,1,1);
+ V6 := (-1,1,1);
+ V7 := (-1,-1,1);
+ V8 := (1,-1,1);
+ V9 := (1,1,-1);
+ V10 := (-1,1,-1);
+ V11 := (-1,-1,-1);
+ V12 := (1,-1,-1);
+ V13 := (0,0,tro);
+ V14 := (0,0,-tro);
+ makeface1(1,5,13,8);
+ makeface2(2,6,13,5);
+ makeface3(3,7,13,6);
+ makeface4(4,8,13,7);
+ makeface5(1,5,2,9);
+ makeface6(2,6,3,10);
+ makeface7(3,7,4,11);
+ makeface8(4,8,1,12);
+ makeface9(1,9,14,12);
+ makeface10(2,10,14,9);
+ makeface11(3,11,14,10);
+ makeface12(4,12,14,11);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ f := 2*(5,3,1.5);
+ Spread := 50;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+endfig;
+
+beginfig(6); % pauphtflex eps
+ defaultscale := 1;
+ defaultfont := "ccr10";
+ color A, B, C, D, E, F, G;
+ numeric tro, Adist;
+ tro = sqrt(3)/2;
+ Adist = 0.88854;
+ V1 := (-1.8,0,0);
+ V2 := (-1.8,0.6,1.2*tro);
+ V3 := (1,0.6,1.2*tro);
+ V4 := (1,0,0);
+ V5 := (1,2.5,0);
+ V6 := (-1.8,2.5,0);
+ V7 := (0,0,0);
+ V8 := (0,0.707,0);
+ V9 := (0,0.707/4,0.707*tro/2);
+ V10:= (0.21928,Adist/2,tro*Adist);
+ V11:= (-0.37392,0.39638,0);
+ V12:= (-1.2125,Adist,0);
+ makeface1(1,2,3,4);
+ makeface2(4,5,6,1);
+ makeface3(7,8,9);
+ makeface4(8,9,10);
+ makeface5(8,10,11);
+ makeface6(10,11,12);
+ A = (0,1.3,0);
+ B = (0,1.3+sqrt(0.75),0);
+ C = (-0.5,1.3+sqrt(0.75),0);
+ D = (E+B)/2;
+ E = (sqrt(0.75),1.3,0);
+ F = ((1+sqrt(3))/4,1.3+(1+sqrt(3))/4,0);
+ G = (-1.5,1.3+sqrt(0.75),0);
+ f := 3*(2,5,2);
+ Spread := 100;
+ draw rp(A)--rp(B)--rp(E)--cycle;
+ draw rp(F)--rp(B)--rp(E)--cycle;
+ draw rp(A)--rp(B)--rp(C)--cycle;
+ draw rp(A)--rp(C)--rp(G)--cycle;
+ draw rp(A)--rp(F) dashed evenly;
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+ draw rp(V7)--rp(V9);
+ draw rp(V10)--rp(V9);
+ draw rp(V12)--rp((-1.2125,0,0)) dashed evenly;
+ label.urt("Adist", rp((V12+(-1.2125,0,0))/2) );
+ label.lft("A", rp(V10) );
+ label.bot("B", rp(V8) );
+ label.bot("B", rp(B) );
+ label.lrt("C", rp(V11) );
+ label.lft("D", rp(V9) );
+ label.bot("D", rp(D) );
+ label.llft("F", rp(V7) );
+ label.bot("F", rp(F) );
+ label.rt("G", rp(V12) );
+ angline(V6, V2, V1, 0.6, btex $\alpha$ etex, rt);
+ angline(V10, 2*V9, V9, 0.7, btex $\theta$ etex, bot);
+ draw rp(V9+N(V10-V9)*0.65)--rp(V9+N(V10-V9)*0.8);
+ draw rp(V9+N(V9)*0.5)--rp(V9+N(V9)*0.8);
+ label.bot(btex $p$ etex, rp((F+B)/2) );
+ label.ulft(btex $q$ etex, rp((D+B)/2) );
+ label.lft(btex $r$ etex, rp((D+A)/2) );
+ label.llft(btex $s$ etex, rp((A+B)/2) );
+ label.llft(btex $t$ etex, rp((A+C)/2) );
+ label.bot(btex $t$ etex, rp((G+C)/2) );
+ label.bot(btex $u$ etex, rp((C+B)/2) );
+ label.top(btex $v$ etex, rp((A+G)/2) );
+endfig;
+
+beginfig(7); % pauphttoro eps
+ defaultscale := 1;
+ defaultfont := "ccr10";
+ numeric sinthe, costhe, ux, uz, lx, lz, co;
+ costhe = (4*sqrt(5)-sqrt(3))/11;
+ sinthe = sqrt(1-costhe**2);
+ ux = costhe*sqrt(2)/2;
+ uz = sinthe/2;
+ lx = sqrt(4/3)*sinthe;
+ lz = -sqrt(2/3)*costhe;
+ co = sqrt(2)*(2*sqrt(5)+5*sqrt(3))/22;
+ V1 := (ux,0,-uz);
+ V2 := (lx,0,-lz);
+ V3 := (0,ux,uz);
+ V4 := (0,lx,lz);
+ V5 := (co,co,0);
+ V6 := (-ux,0,-uz);
+ V7 := (-lx,0,-lz);
+ V8 := (-co,co,0);
+ makeface1(1,2,3);
+ makeface2(1,2,5);
+ makeface3(2,3,5);
+ makeface4(3,4,5);
+ makeface5(3,4,1);
+ makeface6(1,4,5);
+ makeface7(3,6,7);
+ makeface8(3,7,8);
+ makeface9(6,7,8);
+ makeface10(3,8,4);
+ makeface11(4,6,8);
+ makeface12(3,4,6);
+ Spread := 100;
+% f := (1,-0.4,3);
+ f := 2*(2,1,2.8);
+ draw_invisible( false, false, TableC6, black );
+% cartaxes(0.2,0.2,0.2);
+ draw rp(V2)--rp(V1)--rp(V4) dashed evenly;
+ draw rp(V3)--rp(V1)--rp(V5) dashed evenly;
+ draw rp(V6)--rp(V4) dashed evenly;
+ draw rp(V6)--rp(V8) dashed evenly;
+% pickup pencircle scaled 1pt;
+% sharpraytrace;
+ label.rt("A", rp(V5) );
+ label.rt("C", rp(V3+(0,0.05,0)) );
+ label.rt("B", rp(V4) );
+ label.rt("D", rp(V8) );
+ label.lft("E", rp(V2) );
+ label.llft("F", rp(V1) );
+ label.lft("G", rp(V7) );
+ label.lft("H", rp(V6) );
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/rigorcubo.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/rigorcubo.mp
new file mode 100644
index 00000000000..831861fc9b6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/rigorcubo.mp
@@ -0,0 +1,36 @@
+% rigorcubo.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(0);
+ defaultscale := 3;
+ defaultfont := "ccr10";
+ Spread := 50;
+ V1 := (1,1,1);
+ V2 := (-1,1,1);
+ V3 := (-1,-1,1);
+ V4 := (1,-1,1);
+ V5 := (1,1,-1);
+ V6 := (-1,1,-1);
+ V7 := (-1,-1,-1);
+ V8 := (1,-1,-1);
+ makeface1(1,2,3,4);
+ makeface2(5,6,7,8);
+ makeface3(1,2,6,5);
+ makeface4(2,3,7,6);
+ makeface5(3,4,8,7);
+ makeface6(4,1,5,8);
+ f := (3,5,3);
+ pickup pencircle scaled 1pt;
+ sharpraytrace;
+ label.lft("A", rp(V8) );
+ label.top("B", rp(V1) );
+ label.top("C", rp(V3) );
+ label.lft("D", rp(V4) );
+ label.rt("E", rp(V2) );
+ label.rt("F", rp(V6) );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/rmnbob.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/rmnbob.mp
new file mode 100644
index 00000000000..54d568c1e49
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/rmnbob.mp
@@ -0,0 +1,45 @@
+
+Spread := 70;
+f := (5,7,10);
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric i, r[], stepr, len, Numr, Minn, Maxn;
+ numeric fws, NumLines, linex;
+ path aro[], oneline;
+ color centre, axe, baseone, basetwo;
+
+ stepr := 0.1;
+ len := 3;
+ Numr := 5;
+ Minn := 5;
+ centre := (0,0,0);
+ axe := (1,0,0);
+ fws := 2;
+ NumLines := 30;
+ for i=0 upto NumLines:
+ linex := fws*(i/NumLines-0.5);
+ oneline := rp((linex,0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,0.5*fws));
+ draw oneline withcolor (0.7*background);
+ endfor;
+ baseone := centre+0.5*len*axe;
+ basetwo := centre-0.5*len*axe;
+ Maxn := Minn+Numr;
+ for i=Minn upto Maxn:
+ r[i] := i*stepr;
+ aro[i] := rigorouscircle(baseone,axe,r[i]);
+ endfor;
+ rigorousdisc( 0, true, baseone, r[Maxn], -len*axe );
+ drawoptions( dashed evenly );
+ rigorousdisc( 0, true, baseone, r[Minn], -len*axe );
+ for i=Maxn downto Minn:
+ filldraw aro[i] withcolor ((0.5+0.3*normaldeviate)*background);
+ endfor;
+ drawoptions( );
+ draw aro[Maxn];
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/sal.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/sal.mp
new file mode 100644
index 00000000000..e2c447a27a9
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/sal.mp
@@ -0,0 +1,104 @@
+% Cesium Cloride Crystal Structure and EBG fields together
+% L. Nobre G.
+% 2002
+
+verbatimtex
+\documentclass{article}
+\begin{document}
+etex
+
+beginfig(1);
+ numeric sfr, radfac, ind;
+ color xv, yv, zv;
+ path p[];
+ f := 3*(5,2,3);
+ Spread := 50;
+ sfr := 0.2;
+ radfac := 2.0;
+ xv := (sfr,0,0);
+ yv := (0,sfr,0);
+ zv := (0,0,sfr);
+ V1 := (-1,-1,-1);
+ V2 := (-1,1,-1);
+ V3 := (1,-1,-1);
+ V4 := (1,1,-1);
+ V5 := (-1,-1,1);
+ V6 := (-1,1,1);
+ V7 := (1,-1,1);
+ V8 := (1,1,1);
+ V9 := (0,0,0);
+ for ind=1 upto 8:
+ p[ind] := rigorousfearpath( V[ind], sfr );
+ endfor;
+ p9 := rigorousfearpath( V9, sfr*radfac );
+ unfill p1;
+ draw p1;
+ draw rp(V1+yv)--rp(V2-yv);
+ draw rp(V1+xv)--rp(V3-xv);
+ unfill p2;
+ draw p2;
+ unfill p3;
+ draw p3;
+ draw rp(V4-yv)--rp(V3+yv);
+ draw rp(V4-xv)--rp(V2+xv);
+ unfill p4;
+ draw p4;
+ draw rp(V1+zv)--rp(V5-zv);
+ draw rp(V2+zv)--rp(V6-zv);
+ unfill p9;
+ draw p9;
+ draw rp(V3+zv)--rp(V7-zv);
+ draw rp(V4+zv)--rp(V8-zv);
+ unfill p5;
+ draw p5;
+ draw rp(V5+yv)--rp(V6-yv);
+ draw rp(V5+xv)--rp(V7-xv);
+ unfill p6;
+ draw p6;
+ unfill p7;
+ draw p7;
+ draw rp(V8-yv)--rp(V7+yv);
+ draw rp(V8-xv)--rp(V6+xv);
+ unfill p8;
+ draw p8;
+ label( btex Cs${}^{+}$ etex, rp( V8 ) );
+ label( btex Cl${}^{-}$ etex, rp( V9 ) );
+endfig;
+
+beginfig(2);
+ numeric inc, ind, tep, larg, altr, lene;
+ path efld, velv, arch, auxi;
+ picture bfld;
+ pair vpos, cent;
+ tep = 1cm;
+ larg = 4;
+ altr = 3;
+ lene = larg*tep;
+ bfld = btex $\times$ etex;
+% bfld := bfld shifted -(center bfld);
+ efld = origin--(lene,0);
+ for ind = 0 upto altr:
+ drawarrow efld shifted (0,ind*tep);
+ endfor;
+ auxi = efld shifted (0,tep);
+ for ind = 1 upto altr:
+ for inc = 1 step 2 until 2*larg:
+ label( bfld, (0.5*inc*tep,(ind-0.5)*tep) );
+ endfor;
+ endfor;
+ vpos = (tep,0.5tep);
+ label.lft( btex $\vec{B}$ etex, (0.5tep,(altr-0.5)*tep) );
+ label.lft( btex $\vec{E}$ etex, origin );
+ label.top( btex $\vec{v}$ etex, vpos );
+ velv = vpos--((larg-1)*tep,(altr-0.5)*tep);
+ drawarrow velv;
+ cent = auxi intersectionpoint velv;
+ arch = ((fullcircle scaled (altr*tep*0.87)) shifted cent) cutafter velv;
+ draw arch;
+ label.rt( btex $\theta$ etex, point 0.5*length arch of arch );
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/sfearschem.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/sfearschem.mp
new file mode 100644
index 00000000000..a9f2ea6a344
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/sfearschem.mp
@@ -0,0 +1,34 @@
+% sfearchem.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+defaultfont:="cmssu30";
+
+beginfig(1);
+ f := (4,2,1.5);
+ cartaxes( 1.5,1.5,0.75 );
+ drawoptions( withcolor red withpen pencircle scaled 1.3pt );
+ draw goodcirclepath( (0,0,0), (0,0,1), 1 );
+ drawoptions();
+ draw rigorouscircle( (0,0,0), (0,0,1), 1 );
+ draw spatialhalfcircle( (0,0,0), (0,0,1), 0.5, true );
+ draw spatialhalfcircle( (0,0,0), (0,0,1), 0.5, false ) dashed evenly;
+ draw rigorousfearpath( (0,0,0), 0.5 );
+ draw rp((0,0,0.5)) withpen pencircle scaled 1.3pt;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/signalvertexSD.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/signalvertexSD.mp
new file mode 100644
index 00000000000..dfc5eb3f501
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/signalvertexSD.mp
@@ -0,0 +1,40 @@
+% signalvertexSD.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% Draw a torus with NP dots, a section of 3.14*RS^2
+% and a total diameter of 2*(RB+RS). The dots are placed
+% on a single closed line that turns around the $z$ axis
+% NB times and around the section NS times.
+
+f := 0.45f;
+
+%SphericalDistortion := true; Spread := 11;
+
+beginfig(1);
+ NP:=2000;
+ RB:=1;
+ RS:=0.2;
+ R3:=0.0;
+ NB:=8;
+ NS:=5;
+ jB:=360*NB/NP;
+ jS:=360*NS/NP;
+ for i=1 upto NP:
+ phi :=i*jS;
+ theta :=i*jB;
+ first :=(RB+(RS+R3*sind(4*theta))*cosd(phi))*cosd(theta);
+ second:=(RB+(RS+R3*sind(4*theta))*cosd(phi))*sind(theta);
+ third := (RS+R3*sind(4*theta))*sind(phi);
+ signalvertex( (first,second,third), 1, black );
+ endfor;
+endfig;
+
+end;
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/spherample.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/spherample.mp
new file mode 100644
index 00000000000..39352e6ba02
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/spherample.mp
@@ -0,0 +1,49 @@
+% spherample.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+SphericalDistortion := true;
+
+beginfig(1);
+ color orig, axxc, ayyc, azzc;
+ color nalfa, gammacnt, vertex;
+ numeric altura, grids, radius, xxsize, aux,
+ yysize, zzsize, i, numc, slope;
+ path sfear;
+
+ f := (5,4,2);
+ Spread := 120;
+ ShiftV := (200,200);
+ altura = 1;
+ radius = 0.3;
+ grids = 1;
+ numc = 9;
+ slope = 3;
+
+ for i=1 upto numc:
+ aux := (i-1-0.5*(numc-1))*grids;
+ gammacnt := (0,aux,0);
+ vertex := (aux/slope,aux,altura);
+ nalfa := vertex - gammacnt;
+ sfear := rigorousfearpath(gammacnt,radius);
+ unfill sfear;
+ draw sfear;
+ draw spatialhalfcircle(gammacnt,nalfa,radius,true);
+ endfor;
+ xxsize = radius;
+ yysize = 0.5*(numc-1)*grids;
+ zzsize = altura;
+ orig = (0,0,0);
+ axxc = (xxsize,0,0);
+ ayyc = (0,yysize,0);
+ azzc = (0,0,zzsize);
+% drawarrow rp(orig)..rp(axxc);
+% drawarrow rp(orig)..rp(ayyc);
+% drawarrow rp(orig)..rp(azzc);
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/squareanglines.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/squareanglines.mp
new file mode 100644
index 00000000000..769f2af8721
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/squareanglines.mp
@@ -0,0 +1,14 @@
+% squareanglines.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ cartaxes(1,1,1);
+ squareangline( red, green, black, 0.4);
+ squareangline( green, blue, black, 0.6);
+ squareangline( blue, red, black, 0.8);
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/troncoconedef.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/troncoconedef.mp
new file mode 100644
index 00000000000..0429ac4533f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/troncoconedef.mp
@@ -0,0 +1,54 @@
+% troncoconedef.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+f := (5,0,3);
+
+def twoclicpathesinapen( expr CycleA, CycleB )=
+ begingroup
+ numeric TheLengthOfA, TheLengthOfB, TheMargin;
+ path SubPathA, SubPathB;
+ TheMargin = 0.02;
+ TheLengthOfA = ( length CycleA ) - TheMargin;
+ TheLengthOfB = ( length CycleB ) - TheMargin;
+ SubPathA = subpath ( 0, TheLengthOfA ) of CycleA;
+ SubPathB = subpath ( 0, TheLengthOfB ) of CycleB;
+ ( makepath makepen ( SubPathA--SubPathB--cycle ) )
+ endgroup
+enddef;
+
+beginfig(0);
+ numeric rayo, rayt;
+ path onec, twoc, botc;
+ color axec, baso, bast;
+ rayo = 1;
+ rayt = 0.7;
+ axec = red;
+ baso = black;
+ bast = (1,1,1);
+ onec = goodcirclepath( baso, axec, rayo );
+ twoc = goodcirclepath( bast, axec, rayt );
+ botc = twoclicpathesinapen( onec, twoc );
+ fill botc withcolor green;
+ draw onec;
+ draw twoc;
+ draw botc;
+ dotlabel.bot( btex onec0 etex, point 0 of onec );
+ dotlabel.bot( btex twoc0 etex, point 0 of twoc );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistnlc.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistnlc.mp
new file mode 100644
index 00000000000..b3611cfbb14
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistnlc.mp
@@ -0,0 +1,54 @@
+% explvis2
+% L. Nobre G.
+% 1999
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+
+ f := (2,1,1);
+
+ Spread := 250;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, thetamin,
+ thetamax, thetastp, long, base, radius, polar;
+ sizevec := (4,36,1);
+ gridvec := (0.14,0.1,0.3);
+ thetamin := 90;
+ thetamax := 150;
+ long := 0.08;
+ base := 0.02;
+ thetastp := (thetamax-thetamin)/(X(sizevec)-1);
+ starpos := ( -X(gridvec)*X(sizevec) ,
+ -X(gridvec)*X(sizevec) ,
+ 0 );
+ bordpos := starpos;
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ counter := 2;
+ for i=1 upto X(sizevec):
+ radius := (i-1)*X(gridvec);
+ polar := i*floor(Y(sizevec)/X(sizevec));
+ for j=1 upto polar:
+ for k=1 upto Z(sizevec):
+ phi := 360*(j-1)/polar;
+ theta := thetamin+(i-1)*thetastp;
+ currpos := radius*(cosd(phi-90),sind(phi-90),0)
+ +(k-1)*(0,0,Z(gridvec));
+ generatedirface( counter, phi, theta, long, base, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ NF := decr(counter);
+ draw_all_test(false);
+% sharpraytrace;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistroundbiax.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistroundbiax.mp
new file mode 100644
index 00000000000..59a47907a88
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twistroundbiax.mp
@@ -0,0 +1,62 @@
+% twistroundbiax.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+
+ f := (2,1,1);
+
+ Spread := 250;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, gamma, thetamin, innercircle,
+ thetamax, thetastp, long, base, radius, polar, larg;
+ sizevec := (4,36,1);
+ gridvec := (0.143,0.1,0.1);
+ thetamin := 90;
+ thetamax := 150;
+ long := 0.08;
+ larg := 0.02;
+ base := 0.2;
+ gamma := -30;
+ innercircle := 0.5;
+ thetastp := (thetamax-thetamin)/(X(sizevec)-1);
+ starpos := ( -X(gridvec)*X(sizevec) ,
+ -X(gridvec)*X(sizevec) ,
+ 0 );
+ bordpos := starpos;
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ NF := 1;
+ draw facepath(1);
+ counter := 0;
+ for i=1 upto X(sizevec):
+ radius := (i-innercircle)*X(gridvec);
+ polar := i*floor(Y(sizevec)/X(sizevec));
+ for j=1 upto polar:
+ for k=1 upto Z(sizevec):
+ phi := 360*(j-1)/polar;
+ theta := thetamin+(i-innercircle)*thetastp;
+ currpos := radius*(cosd(phi-90),sind(phi-90),0)
+ +(k-1)*(0,0,Z(gridvec));
+ counter := incr(counter);
+% generateonebiax( counter, phi, theta, long,
+% gamma, larg, currpos );
+ generatedirline( counter, phi, theta, long, currpos );
+ endfor;
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( true, base, false );
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/twocyclestogether.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twocyclestogether.mp
new file mode 100644
index 00000000000..ca94e87dc2e
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twocyclestogether.mp
@@ -0,0 +1,113 @@
+% twocyclestogether.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := (4.5,-6,5);
+
+beginfig(1);
+ numeric len[], ray[];
+ color axe[], pos[], fix[], lab[], Ve[];
+ color reflabpos, reflabpoi;
+ picture txt[], dashpatt;
+ numeric inclang, aberang, sampang;
+ numeric squside, sqlevel, ul, outermagpos;
+ numeric innerray, polesep, fracone, fracsam;
+ numeric labelscale;
+ path tmpath, aupath, copath;
+
+ pickup pencircle scaled 1.2pt;
+ dashpatt = evenly scaled 3;
+ ul = 0.1;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Change one of these at a time. %%%%%%%%
+ inclang = 129;
+ aberang = 19;
+ outermagpos = 22ul;
+ polesep = 1.7ul;
+ len4 = 30ul;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ sampang = 30;
+ fracone = 0.33;
+ fracsam = 0.86;
+ ray1 = 10ul;
+ ray2 = 6ul;
+ ray3 = 8ul;
+ ray4 = 1.5ul;
+ ray5 = 4ul;
+ ray6 = 3ul;
+ ray7 = 3.5ul;
+ ray8 = 2ul;
+ len3 = 7ul;
+ len5 = 3ul;
+ len7 = 3.5ul;
+ len8 = 7ul;
+
+ len1 = (1-fracone)*(outermagpos-ray5-polesep);
+ pos1 = (-outermagpos,0,0);
+ rigorousdisc( 0, true, pos1, ray1, len1*(1,0,0) );
+
+ len2 = fracone*(outermagpos-ray5-polesep);
+ pos2 = (len1-outermagpos,0,0);
+ tmpath := goodcirclepath( pos2, (1,0,0), ray1 );
+ aupath := goodcirclepath( (-ray5-polesep,0,0), (1,0,0), ray2 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+
+ Ve5 := fracsam*ray5*( sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ Ve6 := fracsam*ray5*( -sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ Ve8 := fracsam*ray5*( sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ Ve7 := fracsam*ray5*( -sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ tmpath := rp(Ve5)--rp(Ve6)--rp(Ve7)--rp(Ve8)--cycle;
+ unfill tmpath;
+ draw tmpath;
+
+ axe6 = ( 0, cosd( inclang+aberang ), sind( inclang+aberang ) );
+ pos6 = ray1*axe6;
+ len6 = len4;
+ axe7 = ( 0, cosd( inclang-aberang ), sind( inclang-aberang ) );
+ pos7 = ( ray1 + 0.5len6 )*axe7;
+ draw rp(pos6)--rp((0,0,0))--rp(pos7) dashed dashpatt;
+
+ pos8 = pos7+len7*axe7;
+ tmpath := goodcirclepath( pos7, axe7, ray7 );
+ aupath := goodcirclepath( pos8, axe7, ray8 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+
+ axe8 = axe7;
+ rigorousdisc( 0, true, pos8, ray8, len8*axe8 );
+
+ len9 = len2;
+ pos9 = (ray5+polesep,0,0);
+ ray9 = ray2;
+ ray10 = ray1;
+ tmpath := goodcirclepath( pos9, (1,0,0), ray9 );
+ pos10 = pos9+len9*(1,0,0);
+ aupath := goodcirclepath( pos10, (1,0,0), ray10 );
+ copath := twocyclestogether( tmpath, aupath );
+ unfill copath;
+ draw copath;
+ draw aupath;
+
+ len10 = len1;
+ rigorousdisc( 0, true, pos10, ray10, len10*(1,0,0) );
+
+ produce_auto_scale;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/repeated/twoupcones.mp b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twoupcones.mp
new file mode 100644
index 00000000000..cc9b697dd37
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/repeated/twoupcones.mp
@@ -0,0 +1,51 @@
+% twoupcones.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+f := 3*(2,1,0.5);
+
+beginfig(1);
+ numeric raya, rayb, heia, heib, rang, marg, u;
+ color cena, cenb, vera, verb, auxa, auxb, pora, porb, poha, pohb;
+ u = 0.38;
+ raya = 1u;
+ rayb = 2u;
+ heia = 0.65u;
+ marg = 0.2u;
+ rang = 60;
+ heib = heia*rayb/raya;
+ cena = (raya*(1+marg),0,0);
+ cenb = (-rayb*(1+marg),0,0);
+ auxa = cena + raya*(cosd(rang),sind(rang),0);
+ auxb = cenb + rayb*(cosd(rang),sind(rang),0);
+ pora = 0.5[auxa,cena];
+ porb = 0.5[auxb,cenb];
+ vera = cena+heia*blue;
+ verb = cenb+heib*blue;
+ poha = 0.5[cena,vera];
+ pohb = 0.5[cenb,verb];
+ verygoodcone(true,cenb,blue,rayb,verb);
+ draw rp(verb)--rp(cenb)--rp(auxb) dashed evenly;
+ label.urt(btex $h_1$ etex, rp(pohb));
+ label.urt(btex $R_1$ etex, rp(porb));
+ verygoodcone(true,cena,blue,raya,vera);
+ draw rp(vera)--rp(cena)--rp(auxa) dashed evenly;
+ label.urt(btex $h_2$ etex, rp(poha));
+ label.urt(btex $R_2$ etex, rp(pora));
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/anglinerigorouscircle.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/anglinerigorouscircle.mp
new file mode 100644
index 00000000000..57548730161
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/anglinerigorouscircle.mp
@@ -0,0 +1,108 @@
+% angline_rigorouscircle.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ color orig, axxc, ayyc, azzc;
+ color field, nalfa, ngamma, alfacnt, gammacnt, nazy, nax;
+ path alfa, gamma;
+ numeric nalfad, theta, radius, gammang, xxsize, yysize, zzsize;
+ numeric xxpos, yypos, zzpos, fieldpos, deltarad, deltapos;
+ numeric thetarad, thetapos, nalfapos, ngammapos;
+ numeric etalpharad, etalphapos, alphapos, gammapos;
+ picture xxlabel, yylabel, zzlabel, fieldlabel, deltalabel;
+ picture nalfalabel, ngammalabel, etalphalabel, alphalabel;
+ picture gammalabel, thetalabel;
+
+ f := (3,4,2);
+ Spread := 100;
+ xxsize = 0.8;
+ xxpos = 6;
+ yysize = 0.8;
+ yypos = 6;
+ zzsize = 1.3;
+ zzpos = 4;
+ field = (0.7,0,0.3);
+ fieldpos = 2;
+ deltarad = 0.45;
+ deltapos = 3;
+ nalfad = 1.0;
+ theta = 25;
+ thetarad = 0.3;
+ thetapos = 2;
+ nalfapos = 7;
+ gammang = 65;
+ ngammapos = 7;
+ etalpharad = 0.4;
+ etalphapos = 2;
+ alphapos = 6;
+ gammapos = 0;
+
+ xxlabel = btex $x_c$ etex;
+ yylabel = btex $y_c$ etex;
+ zzlabel = btex $z_c$ etex;
+ deltalabel = btex $\Delta$ etex;
+ fieldlabel = btex $\mathbf{B}$ etex;
+ thetalabel = btex $\theta$ etex;
+ nalfalabel = btex $\vec{n}_\alpha$ etex;
+ ngammalabel = btex $\vec{n}_\gamma$ etex;
+ etalphalabel= btex $\eta_\alpha$ etex;
+ alphalabel = btex $\alpha$ etex;
+ gammalabel = btex $\gamma$ etex;
+ orig = (0,0,0);
+ axxc = (xxsize,0,0);
+ ayyc = (0,yysize,0);
+ azzc = (0,0,zzsize);
+ nalfa = (0,sind(theta),cosd(theta));
+ alfacnt = (0,0,nalfad*cosd(theta));
+ radius = nalfad*sind(theta);
+ alfa = rigorouscircle( alfacnt, (0,0,1), radius );
+ gammacnt = cosd(theta)*cosd(theta)*nalfa;
+ radius := cosd(theta)*sind(theta);
+ gamma = rigorouscircle( gammacnt, nalfa, radius );
+ nazy = radius*sind(gammang)*ncrossprod( nalfa, axxc );
+ nax = radius*cosd(gammang)*ncrossprod( ayyc, nalfa );
+ ngamma = gammacnt+nax+nazy;
+ draw alfa dashed evenly;
+ draw gamma dashed evenly;
+ drawarrow rp(orig)..rp(axxc);
+ drawarrow rp(orig)..rp(ayyc);
+ drawarrow rp(orig)..rp(azzc);
+ drawarrow rp(orig)..rp(field);
+ drawarrow rp(orig)..rp(nalfa);
+ drawarrow rp(orig)..rp(ngamma);
+ drawarrow subpath (4,3) of alfa;
+ drawarrow subpath (8,7) of gamma;
+ anglinen( field, azzc, orig, deltarad, deltalabel, deltapos );
+ anglinen( azzc, nalfa, orig, thetarad, thetalabel, thetapos );
+ anglinen( ngamma, field, orig, etalpharad, etalphalabel, etalphapos );
+ labeln( xxlabel, rp(axxc), xxpos );
+ labeln( yylabel, rp(ayyc), yypos );
+ labeln( zzlabel, rp(azzc), zzpos );
+ labeln( fieldlabel, rp(field), fieldpos );
+ labeln( nalfalabel, rp(nalfa), nalfapos );
+ labeln( ngammalabel, rp(ngamma), ngammapos );
+ labeln( alphalabel, point 3 of alfa, alphapos );
+ labeln( gammalabel, point 7 of gamma, gammapos );
+ pickup pencircle scaled 1.5;
+ draw rp(alfacnt);
+ draw rp(gammacnt);
+% produce_auto_scale;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/cartaxes.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/cartaxes.mp
new file mode 100644
index 00000000000..af8576e06c2
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/cartaxes.mp
@@ -0,0 +1,28 @@
+verbatimtex
+\documentclass{article}
+\begin{document}
+
+%input featpost3Dplus2D;
+etex
+beginfig(1);
+ cartaxes(1,1,1);
+endfig;
+f := (5,3.5,1);
+beginfig(2);
+ cartaxes(1,1,1);
+ color va, vb, vc, vd;
+ va = (0.29,0.7,1.0);
+ vb = (X(va),Y(va),0);
+ vc = N((-Y(va),X(va),0));
+ vd = (0,Y(vc),0);
+ drawarrow rp(black)--rp(va);
+ draw rp(black)--rp(vb)--rp(va) dashed evenly;
+ draw rp(vc)--rp(vd) dashed evenly;
+ drawarrow rp(black)--rp(vc);
+ squareangline( va, vc, black, 0.15 );
+ angline( va, red, black, 0.75, decimal getangle( va, red ), lft );
+endfig;
+verbatimtex
+\end{document}
+etex
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/conicurv.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/conicurv.mp
new file mode 100644
index 00000000000..15aea824d14
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/conicurv.mp
@@ -0,0 +1,94 @@
+% conicurv.mp
+% L. Nobre G.
+% Y2K
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ f := (10,-5,5.44);
+ Spread := 30;
+ numeric shortradius, longradius, theta, width, height;
+ numeric updiff, refsize, vecsize, anglar, bord, totup;
+ color rn, fa, fc, pg, centre, speed, refx, refy;
+ color iplow, iphig, oplow,ophig, anglebase, central, refo;
+ color eplow, ephig, aplow,aphig, anglebase, central, refo;
+ theta = 30;
+ width = 3;
+ shortradius = 2;
+ bord = 2;
+ refsize = 1;
+ vecsize = 2;
+ height = 0.3;
+ anglar = 1.75;
+ totup = 3;
+ longradius = shortradius + width*cosd(theta);
+ updiff = width*sind(theta);
+ iplow = (0,shortradius,0);
+ iphig = (0,longradius,updiff);
+ oplow = (-shortradius,0,0);
+ ophig = (-longradius,0,updiff);
+ aplow = -iplow;
+ aphig = (0,-longradius,updiff);
+ eplow = -oplow;
+ ephig = (longradius,0,updiff);
+ anglebase = (0,longradius,0);
+ centre = 0.5[iplow,iphig]+(0,0,height);
+ central = (0,0,Z(centre));
+% refo = (0,0,-shortradius*sind(theta)/cosd(theta));
+ refo = (0,0.5*Y(centre),Z(centre));
+ refx = refsize*(0,cosd(theta),sind(theta));
+ refy = refsize*(0,-sind(theta),cosd(theta));
+% anglinen( iplow, oplow, (0,0,0), shortradius, "", 0 );
+% anglinen( iphig, ophig, (0,0,updiff), longradius, "", 0 );
+ angline(iphig,anglebase,iplow,width/anglar,btex $\theta$ etex,rt);
+ draw rp(central) withpen pencircle scaled 2pt;
+ draw rp(iplow)--rp(iphig);
+ draw rp(oplow)--rp(ophig);
+ draw rp(aplow)--rp(aphig);
+ draw rp(eplow)--rp(ephig);
+ draw rp(iphig)--rp(anglebase)--rp(aplow) dashed evenly;
+ draw rp(oplow)--rp(eplow) dashed evenly;
+ draw rp(central)--rp(centre) dashed evenly;
+% draw rp((0,-bord,-bord))--rp((0,longradius+bord,-bord))
+% --rp((0,longradius+bord,totup))--rp((0,-bord,totup))--cycle
+% withpen pencircle scaled 2pt;
+ draw rp((0,0,-bord))--rp((0,longradius+bord,-bord))
+ --rp((0,longradius+bord,totup))--rp((0,0,totup))--cycle;
+ drawarrow rp(refo)..rp(refo+refy);
+ drawarrow rp(refo)..rp(refo+refx);
+ label.llft(btex $y$ etex, rp(refo+refy));
+ label.lrt(btex $x$ etex, rp(refo+refx));
+ rn = centre+vecsize*refy;
+ fa = centre+vecsize*refx;
+ fc = centre+vecsize*(0,1,0);
+ pg = centre+vecsize*(0,0,-1);
+ speed = centre+vecsize*(1,0,0);
+ drawarrow rp(centre)..rp(rn);
+ drawarrow rp(centre)..rp(fa);
+ drawarrow rp(centre)..rp(fc);
+ drawarrow rp(centre)..rp(pg);
+ drawarrow rp(centre)..rp(speed);
+ label.rt(btex $\vec{R}_N$ etex, rp(rn));
+ label.top(btex $\vec{F}_a$ etex, rp(fa));
+ label.urt(btex $\vec{F}_c$ etex, rp(fc));
+ label.rt(btex $\vec{P}$ etex, rp(pg));
+ label.rt(btex $\vec{v}$ etex, rp(speed));
+ draw rp(centre) withpen pencircle scaled 10pt withcolor blue;
+ pickup pencircle scaled 2pt;
+ draw rigorouscircle( (0,0,updiff), (0,0,1), longradius );
+ draw rigorouscircle( (0,0,0), (0,0,1), shortradius );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfacecentered.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfacecentered.mp
new file mode 100644
index 00000000000..ac359c3ddf2
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfacecentered.mp
@@ -0,0 +1,112 @@
+% cubicfacecentered.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% verbatimtex
+% \documentclass{article}
+% \usepackage{beton}
+% \usepackage{concmath}
+% \usepackage{ccfonts}
+% \begin{document}
+% etex
+
+beginfig(1);
+ numeric tro;
+ pen fina, media, grossa;
+ color mygray;
+ tro = 2;
+ V1 := (tro,0,0);
+ V2 := (0,tro,0);
+ V3 := (-tro,0,0);
+ V4 := (0,-tro,0);
+ V5 := (1,1,1);
+ V6 := (-1,1,1);
+ V7 := (-1,-1,1);
+ V8 := (1,-1,1);
+ V9 := (1,1,-1);
+ V10 := (-1,1,-1);
+ V11 := (-1,-1,-1);
+ V12 := (1,-1,-1);
+ V13 := (0,0,tro);
+ V14 := (0,0,-tro);
+ V15 := (tro,0,tro);
+ V16 := (0,tro,tro);
+ V17 := (tro,tro,0);
+ V18 := (tro,0,-tro);
+ V19 := (tro,-tro,0);
+ V20 := (0,-tro,tro);
+ V21 := (-tro,0,tro);
+ V22 := (-tro,tro,0);
+ V23 := (0,tro,-tro);
+ V24 := (-tro,0,-tro);
+ V25 := (0,-tro,-tro);
+ V26 := (-tro,-tro,0);
+ V27 := (-2*tro,-tro,-tro);
+ V28 := (-2*tro,-tro,tro);
+ V29 := (-2*tro,tro,tro);
+ V30 := (-2*tro,tro,-tro);
+ makeface1(1,5,13,8);
+ makeface2(2,6,13,5);
+ makeface3(3,7,13,6);
+ makeface4(4,8,13,7);
+ makeface5(1,5,2,9);
+ makeface6(2,6,3,10);
+ makeface7(3,7,4,11);
+ makeface8(4,8,1,12);
+ makeface9(1,9,14,12);
+ makeface10(2,10,14,9);
+ makeface11(3,11,14,10);
+ makeface12(4,12,14,11);
+
+ makeface13(27,28,29,30);
+ makeface14(20,21,16,29,28);
+ makeface15(23,24,25,27,30);
+ makeface16(16,22,23,30,29);
+ makeface17(25,27,28,20,26);
+ makeface18(21,22,24,26);
+ makeface19(20,21,26);
+ makeface20(16,21,22);
+ makeface21(22,23,24);
+ makeface22(24,25,26);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% f := 2*(5,3,1.5);
+% f := 2*(5,3,4);
+ f := 2.34*(15,2.4,5.05);
+ Spread := 50;
+ fina = pencircle scaled 1pt;
+ media = pencircle scaled 1.2pt;
+ grossa= pencircle scaled 3pt;
+ mygray = 0.3background;
+% pickup fina;
+% draw rp(V25)--rp(V27)--rp(V28)--rp(V20)--
+% rp(V25)--rp(V23)--rp(V30)--rp(V27);
+ pickup media;
+ draw rp(V24)--rp(V25)--rp(V19)--rp(V20)--
+ rp(V26)--rp(V25)--rp(V18)--rp(V23)--
+ rp(V24)--rp(V26)--rp(V21)--rp(V22)--cycle withcolor mygray;
+ drawoptions( withpen grossa );
+ draw_invisible( false, false, TableC3, black );
+ fillfacewithlight( 14 );
+ fillfacewithlight( 16 );
+ drawoptions();
+ pickup media;
+ draw rp(V15)--rp(V16)--rp(V22)--rp(V23)--
+ rp(V17)--rp(V16)--rp(V21)--rp(V20)--
+ rp(V15)--rp(V17)--rp(V18)--rp(V19)--cycle withcolor mygray;
+% pickup fina;
+% draw rp(V28)--rp(V29)--rp(V30);
+% draw rp(V20)--rp(V16)--rp(V23);
+% draw rp(V16)--rp(V29);
+
+endfig;
+
+% verbatimtex \end{document} etex
+
+end;
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfigures.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfigures.mp
new file mode 100644
index 00000000000..93aebeb28a0
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/cubicfigures.mp
@@ -0,0 +1,44 @@
+% cubicfigures.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := ( 1.2 , 2.0 , 1.6 );
+Spread := 75;
+
+V1 := (1,1,1);
+V2 := (-1,1,1);
+V3 := (-1,-1,1);
+V4 := (1,-1,1);
+V5 := (1,1,-1);
+V6 := (-1,1,-1);
+V7 := (-1,-1,-1);
+V8 := (1,-1,-1);
+makeface1(1,2,3,4);makeface2(5,6,7,8);
+makeface3(1,2,6,5);makeface4(2,3,7,6);
+makeface5(3,4,8,7);makeface6(4,1,5,8);
+makeline1(1,7);makeline2(2,8);
+makeline3(3,5);makeline4(4,6);
+
+beginfig(1);
+ ParallelProj := true;
+ SphericalDistortion := false;
+ pickup pencircle scaled 1pt;
+ draw_all_test(true);
+endfig;
+
+beginfig(2);
+ ParallelProj := false;
+ SphericalDistortion := false;
+ draw_all_test(true);
+endfig;
+
+beginfig(3);
+ ParallelProj := false;
+ SphericalDistortion := true;
+ PrintStep := 5;
+ draw_all_test(true);
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/cylimple.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/cylimple.mp
new file mode 100644
index 00000000000..bef31891c97
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/cylimple.mp
@@ -0,0 +1,50 @@
+% cylimple.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+SphericalDistortion := true;
+f := 0.3*(5,4,2);
+Spread := 40;
+ShiftV := (200,200);
+
+%SphericalDistortion := false;
+%f := 3.3*(5,4,2);
+%Spread := 70;
+%Shifts := (250,250);
+
+beginfig(1);
+ color orig, axxc, ayyc, azzc;
+ color nalfa, gammacnt, vertex;
+ numeric altura, grids, radius, xxsize, aux,
+ yysize, zzsize, i, numc, slope;
+
+ altura = 1;
+ radius = 0.3;
+ grids = 1;
+ numc = 9;
+ slope = 3;
+
+ for i=1 upto numc:
+ aux := (i-1-0.5*(numc-1))*grids;
+ gammacnt := (0,aux,0);
+ vertex := (aux/slope,aux,altura);
+ nalfa := vertex - gammacnt;
+ rigorousdisc( 0, true, gammacnt, radius, nalfa );
+ endfor;
+ xxsize = radius;
+ yysize = 0.5*(numc-1)*grids;
+ zzsize = altura;
+ orig = (0,0,0);
+ axxc = (xxsize,0,0);
+ ayyc = (0,yysize,0);
+ azzc = (0,0,zzsize);
+% drawarrow rp(orig)..rp(axxc);
+% drawarrow rp(orig)..rp(ayyc);
+% drawarrow rp(orig)..rp(azzc);
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/downloadicon.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/downloadicon.mp
new file mode 100644
index 00000000000..78b9be800e7
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/downloadicon.mp
@@ -0,0 +1,66 @@
+% downloadicon.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+f := 0.4[(12,3,2),(2,5,6)]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Max: 0.8
+Spread := 30;
+TDAtiplen := 0.65;
+TDAhalftipbase := 0.35;
+TDAhalfthick := 0.15;
+
+beginfig(1);
+ color tracecol, lockcol, arrowcol;
+ numeric altura, compri, radius, altfrac, comfrac, radang;
+ path theside, thefront, thelocka, thelockb, thelock;
+ color poi[], startarrow, endarrow;
+ numeric numpl, aux, i;
+ altura = 1;
+ compri = 2;
+ radius = 0.8;
+ altfrac = 0.2;
+ comfrac = 0.15;
+ radang = 37;
+ numpl = 9;
+ tracecol = blue;
+ lockcol = black;
+ arrowcol = (0.7,0.2,0.1);
+ startarrow = (0,-radius,2);
+ endarrow = (0,0,radius);
+ currentpen := pencircle scaled 2.4mm;
+ drawoptions( withcolor tracecol );
+ rigorousdisc( 0, true, (-0.5compri,0,0), radius, (compri,0,0) );
+ poi1 = (0.5compri,-radius,0);
+ poi2 = (0.5compri,radius,0);
+ poi3 = (-0.5compri,radius,0);
+ poi4 = (0.5compri,-radius,-altura);
+ poi5 = (0.5compri,radius,-altura);
+ poi6 = (-0.5compri,radius,-altura);
+ theside = rp(poi1)--rp(poi2)--rp(poi5)--rp(poi4)--cycle;
+ thefront= rp(poi2)--rp(poi3)--rp(poi6)--rp(poi5)--cycle;
+ drawoptions( withcolor white );
+ fill theside;
+ fill thefront;
+ thelocka = rp((comfrac*compri,radius,-altfrac*altura))
+ --rp((comfrac*compri,radius,0));
+ thelockb = rp((-comfrac*compri,radius,-altfrac*altura))
+ --rp((-comfrac*compri,radius,0));
+ for i=1 upto numpl:
+ aux := i*radang/numpl;
+ poi7 := (comfrac*compri,radius*cosd(aux),radius*sind(aux));
+ poi8 := (-comfrac*compri,radius*cosd(aux),radius*sind(aux));
+ thelocka := thelocka...rp(poi7);
+ thelockb := thelockb...rp(poi8);
+ endfor;
+ thelock = thelocka--reverse thelockb--cycle;
+ drawoptions( withcolor lockcol );
+ filldraw thelock;
+ drawoptions( withcolor tracecol );
+ draw theside;
+ draw thefront;
+ drawoptions( withcolor arrowcol );
+ tdarrow( startarrow, endarrow );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/eemcsblabla.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/eemcsblabla.mp
new file mode 100644
index 00000000000..cb35011cc44
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/eemcsblabla.mp
@@ -0,0 +1,292 @@
+% Converted from PostScript(TM) to MetaPost by pstoedit
+% MetaPost backend contributed by Scott Pakin <pakin@uiuc.edu>
+% pstoedit is Copyright (C) 1993 - 2003 Wolfgang Glunz <wglunz@pstoedit.net>
+
+% eemcsblabla.mp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Hacked by L. Nobre G.
+% 2004
+
+numeric zmax, rmax;
+zmax = 1;
+rmax = 1;
+
+def converterfunc( expr Pair ) =
+ begingroup
+ save xucf, yucf, astart, rr, xaux, yaux, raux, aaux, zaux;
+ numeric xucf, yucf, astart, rr, xaux, yaux, raux, aaux, zaux;
+ xucf = 0.21;
+ yucf = 0.002;
+ astart = 120;
+ rr = 0.0004;
+ aaux = astart + xucf*( ypart Pair );
+ raux = rr*aaux + yucf*( xpart Pair );
+ xaux = raux*cosd( aaux );
+ yaux = raux*sind( aaux );
+ zaux = zmax*(1-raux/rmax);
+ ( rp( ( xaux, yaux, zaux ) ) )
+ endgroup
+enddef;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of first featpost part
+
+% Generate structured PostScript
+prologues := 1;
+
+% Display a given string with its *baseline* at a given location
+% and with a given rotation angle
+vardef showtext(expr origin)(expr angle)(expr string) =
+ draw string infont defaultfont scaled defaultscale
+ rotated angle shifted origin;
+enddef;
+
+defaultscale := 0.16;
+beginfig(1);
+ path PreeditedPath[];
+linecap := butt;
+linejoin := mitered;
+PreeditedPath1 = hide(z1=(309,-996.562))z1--hide(z2=(309,-984.905))z2..controls hide(z3=(309,-982.215))z3 and hide(z4=(309.097,-979.126))z4..hide(z5=(309.292,-974.344))z5
+ --hide(z6=(309.392,-971.754))z6--hide(z7=(304.908,-969.861))z7--hide(z8=(304.211,-970.259))z8
+ ..controls hide(z9=(304.609,-978.329))z9 and hide(z10=(305,-984.307))z10..hide(z11=(305,-992.078))z11
+ --hide(z12=(305,-995.764))z12--hide(z13=(281.097,-991.58))z13..controls hide(z14=(279.503,-991.281))z14 and hide(z15=(278.706,-991.082))z15..hide(z16=(277.908,-990.683))z16
+ --hide(z17=(277.709,-986.001))z17..controls hide(z18=(277.61,-982.812))z18 and hide(z19=(277,-979.624))z19..hide(z20=(277,-977.432))z20
+ ..controls hide(z21=(277,-971.255))z21 and hide(z22=(278.088,-967.171))z22..hide(z23=(279.901,-967.071))z23
+ --hide(z24=(288.768,-966.274))z24--hide(z25=(288.768,-963.883))z25..controls hide(z26=(282.392,-963.584))z26 and hide(z27=(277.41,-962.886))z27..hide(z28=(273.625,-961.791))z28
+ ..controls hide(z29=(273.425,-963.883))z29 and hide(z30=(273,-966.872))z30..hide(z31=(273,-968.665))z31
+ ..controls hide(z32=(273,-968.964))z32 and hide(z33=(273,-970.06))z33..hide(z34=(273.1,-972.451))z34
+ --hide(z35=(273.199,-984.407))z35..controls hide(z36=(273.625,-985.303))z36 and hide(z37=(273.299,-991.182))z37..hide(z38=(273.299,-992.178))z38
+ ..controls hide(z39=(273.299,-995.864))z39 and hide(z40=(273.299,-998.554))z40..hide(z41=(273.1,-1003.64))z41
+ --hide(z42=(273,-1008.12))z42--hide(z43=(276.115,-1008.42))z43--hide(z44=(276.314,-1003.04))z44
+ ..controls hide(z45=(276.414,-1000.65))z45 and hide(z46=(277.211,-999.55))z46..hide(z47=(279.005,-999.55))z47
+ ..controls hide(z48=(280.399,-999.55))z48 and hide(z49=(283.588,-999.949))z49..hide(z50=(286.577,-1000.45))z50
+ --hide(z51=(336.79,-1009.11))z51..controls hide(z52=(338.583,-1009.51))z52 and hide(z53=(339.281,-1010.71))z53..hide(z54=(339.979,-1015.09))z54
+ --hide(z55=(342,-1015.59))z55--hide(z56=(341.901,-1011.51))z56..controls hide(z57=(342.085,-1008.42))z57 and hide(z58=(341.701,-1002.24))z58..hide(z59=(341.701,-1000.25))z59
+ --hide(z60=(342,-978.827))z60--hide(z61=(342,-977.831))z61..controls hide(z62=(342,-976.436))z62 and hide(z63=(341.616,-973.945))z63..hide(z64=(341.801,-970.657))z64
+ --hide(z65=(341.701,-967.369))z65--hide(z66=(338.683,-966.971))z66..controls hide(z67=(336.691,-966.772))z67 and hide(z68=(333.702,-966.274))z68..hide(z69=(328.82,-965.377))z69
+ --hide(z70=(326.229,-964.879))z70--hide(z71=(326.229,-967.569))z71--hide(z72=(332.207,-969.163))z72
+ ..controls hide(z73=(335.794,-970.159))z73 and hide(z74=(336.99,-971.056))z74..hide(z75=(337.488,-973.248))z75
+ ..controls hide(z76=(337.886,-975.24))z76 and hide(z77=(338.384,-982.513))z77..hide(z78=(338.384,-987.894))z78
+ ..controls hide(z79=(338.384,-991.978))z79 and hide(z80=(338.284,-994.17))z80..hide(z81=(337.687,-1001.04))z81
+ --hide(z82=(337.288,-1001.04))z82..controls hide(z83=(335.893,-1001.04))z83 and hide(z84=(335.096,-1000.95))z84..cycle;
+ %draw PreeditedPath1;
+%drawoptions( withcolor black );
+ %dotlabels.rt(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84);
+PreeditedPath2 = hide(z85=(310,-859.104))z85..controls hide(z86=(310,-857.61))z86 and hide(z87=(309.691,-856))z87..hide(z88=(307.698,-856))z88
+ ..controls hide(z89=(305.706,-856))z89 and hide(z90=(306,-857.73))z90..hide(z91=(306,-859.005))z91
+ --hide(z92=(306,-918.683))z92..controls hide(z93=(306,-920.078))z93 and hide(z94=(305.706,-922))z94..hide(z95=(307.698,-922))z95
+ ..controls hide(z96=(309.691,-922))z96 and hide(z97=(310,-920.09))z97..cycle;
+ %draw PreeditedPath2;
+%drawoptions( withcolor black );
+ %dotlabels.rt(85,86,87,88,89,90,91,92,93,94,95,96,97);
+PreeditedPath3 = hide(z98=(329,-859.005))z98..controls hide(z99=(329,-857.61))z99 and hide(z100=(329.019,-856))z100..hide(z101=(327.026,-856))z101
+ ..controls hide(z102=(325.034,-856))z102 and hide(z103=(325,-857.735))z103..hide(z104=(325,-859.104))z104
+ --hide(z105=(325,-918.583))z105..controls hide(z106=(325,-920.078))z106 and hide(z107=(325.034,-922))z107..hide(z108=(327.026,-922))z108
+ ..controls hide(z109=(329.019,-922))z109 and hide(z110=(329,-920.09))z110..cycle;
+ %draw PreeditedPath3;
+%drawoptions( withcolor black );
+ %dotlabels.rt(98,99,100,101,102,103,104,105,106,107,108,109,110);
+PreeditedPath4 = hide(z111=(332.008,-747.24))z111--hide(z112=(333.701,-749.831))z112..controls hide(z113=(335.594,-752.72))z113 and hide(z114=(336.69,-754.912))z114..hide(z115=(336.69,-755.908))z115
+ ..controls hide(z116=(336.69,-756.605))z116 and hide(z117=(335.794,-757.203))z117..hide(z118=(334.698,-757.203))z118
+ ..controls hide(z119=(333.701,-757.203))z119 and hide(z120=(332.805,-757.004))z120..hide(z121=(330.712,-756.506))z121
+ --hide(z122=(301.122,-749.034))z122..controls hide(z123=(299.429,-748.635))z123 and hide(z124=(297.835,-748.337))z124..hide(z125=(297.038,-748.337))z125
+ ..controls hide(z126=(295.344,-748.337))z126 and hide(z127=(293.904,-749.333))z127..hide(z128=(293.904,-750.927))z128
+ ..controls hide(z129=(293.904,-753.816))z129 and hide(z130=(295.799,-757.602))z130..hide(z131=(300.326,-763.679))z131
+ ..controls hide(z132=(304.809,-769.956))z132 and hide(z133=(308.296,-773.443))z133..hide(z134=(315.171,-778.325))z134
+ --hide(z135=(301.521,-775.336))z135..controls hide(z136=(299.529,-774.938))z136 and hide(z137=(298.034,-774.639))z137..hide(z138=(297.337,-774.639))z138
+ ..controls hide(z139=(295.444,-774.639))z139 and hide(z140=(293.904,-775.635))z140..hide(z141=(293.904,-777.229))z141
+ ..controls hide(z142=(293.904,-780.218))z142 and hide(z143=(296.214,-784.801))z143..hide(z144=(300.625,-790.281))z144
+ ..controls hide(z145=(304.012,-794.665))z145 and hide(z146=(306.104,-796.657))z146..hide(z147=(314.872,-803.133))z147
+ --hide(z148=(301.621,-799.845))z148..controls hide(z149=(300.027,-799.447))z149 and hide(z150=(298.532,-799.248))z150..hide(z151=(297.337,-799.248))z151
+ ..controls hide(z152=(295.444,-799.248))z152 and hide(z153=(293.904,-800.144))z153..hide(z154=(293.904,-801.539))z154
+ ..controls hide(z155=(293.904,-803.631))z155 and hide(z156=(296.094,-807.417))z156..hide(z157=(301.621,-814.79))z157
+ --hide(z158=(303.614,-817.579))z158--hide(z159=(305.606,-816.882))z159--hide(z160=(303.514,-813.694))z160
+ ..controls hide(z161=(301.222,-810.007))z161 and hide(z162=(301.023,-809.708))z162..hide(z163=(301.023,-809.011))z163
+ ..controls hide(z164=(301.023,-807.915))z164 and hide(z165=(302.02,-807.218))z165..hide(z166=(303.514,-807.218))z166
+ ..controls hide(z167=(308.595,-807.218))z167 and hide(z168=(327.823,-811.302))z168..hide(z169=(342.071,-815.387))z169
+ --hide(z170=(343.167,-815.088))z170--hide(z171=(341.672,-808.313))z171--hide(z172=(331.51,-806.121))z172
+ ..controls hide(z173=(320.451,-803.73))z173 and hide(z174=(314.573,-801.04))z174..hide(z175=(308.595,-795.561))z175
+ ..controls hide(z176=(304.012,-791.376))z176 and hide(z177=(301.023,-786.893))z177..hide(z178=(301.023,-784.103))z178
+ ..controls hide(z179=(301.023,-783.406))z179 and hide(z180=(301.82,-783.007))z180..hide(z181=(303.115,-783.007))z181
+ ..controls hide(z182=(306.602,-783.007))z182 and hide(z183=(317.96,-785.199))z183..hide(z184=(335.396,-789.284))z184
+ --hide(z185=(342.071,-790.878))z185--hide(z186=(343.167,-790.38))z186--hide(z187=(341.672,-783.505))z187
+ --hide(z188=(331.012,-781.413))z188..controls hide(z189=(322.942,-779.819))z189 and hide(z190=(315.47,-776.431))z190..hide(z191=(310.588,-772.048))z191
+ ..controls hide(z192=(304.51,-766.568))z192 and hide(z193=(301.023,-761.586))z193..hide(z194=(301.023,-758.398))z194
+ ..controls hide(z195=(301.023,-757.601))z195 and hide(z196=(301.92,-757.103))z196..hide(z197=(303.514,-757.103))z197
+ ..controls hide(z198=(305.905,-757.103))z198 and hide(z199=(307.3,-757.402))z199..hide(z200=(315.968,-759.594))z200
+ ..controls hide(z201=(322.244,-761.188))z201 and hide(z202=(328.222,-762.881))z202..hide(z203=(331.61,-763.878))z203
+ ..controls hide(z204=(334.399,-764.774))z204 and hide(z205=(336.99,-765.173))z205..hide(z206=(339.181,-765.173))z206
+ ..controls hide(z207=(341.672,-765.173))z207 and hide(z208=(343,-764.077))z208..hide(z209=(343,-762.184))z209
+ ..controls hide(z210=(343,-759.594))z210 and hide(z211=(340.945,-756.007))z211..cycle;
+ %draw PreeditedPath4;
+%drawoptions( withcolor black );
+ %dotlabels.rt(111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211);
+PreeditedPath5 = hide(z212=(309.392,-705.894))z212--hide(z213=(309.392,-703.602))z213..controls hide(z214=(302.916,-702.805))z214 and hide(z215=(299.23,-702.107))z215..hide(z216=(296.639,-701.211))z216
+ ..controls hide(z217=(295.145,-703.602))z217 and hide(z218=(293.904,-707.089))z218..hide(z219=(293.904,-710.775))z219
+ ..controls hide(z220=(293.904,-715.259))z220 and hide(z221=(297.633,-722.631))z221..hide(z222=(302.916,-728.21))z222
+ ..controls hide(z223=(307.798,-733.69))z223 and hide(z224=(318.259,-738))z224..hide(z225=(328.72,-738))z225
+ ..controls hide(z226=(338.285,-738))z226 and hide(z227=(343.096,-733.635))z227..hide(z228=(343.096,-725.321))z228
+ ..controls hide(z229=(343.096,-719.941))z229 and hide(z230=(341.186,-715.159))z230..hide(z231=(336.89,-709.679))z231
+ --hide(z232=(332.805,-704.698))z232--hide(z233=(330.812,-705.495))z233--hide(z234=(331.809,-706.989))z234
+ ..controls hide(z235=(336.591,-714.162))z235 and hide(z236=(338.096,-717.948))z236..hide(z237=(338.096,-721.435))z237
+ ..controls hide(z238=(338.096,-727.015))z238 and hide(z239=(334.174,-729.999))z239..hide(z240=(326.428,-729.999))z240
+ ..controls hide(z241=(315.668,-729.999))z241 and hide(z242=(305.307,-726.472))z242..hide(z243=(301.521,-721.535))z243
+ ..controls hide(z244=(299.927,-719.443))z244 and hide(z245=(298.904,-717.052))z245..hide(z246=(298.904,-713.963))z246
+ ..controls hide(z247=(298.904,-709.479))z247 and hide(z248=(300.897,-705.893))z248..cycle;
+ %draw PreeditedPath5;
+%drawoptions( withcolor black );
+ %dotlabels.rt(212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248);
+PreeditedPath6 = hide(z249=(304.359,-696.969))z249--hide(z250=(306.328,-696.969))z250..controls hide(z251=(306.101,-682.809))z251 and hide(z252=(306,-682.809))z252..hide(z253=(306,-680.083))z253
+ ..controls hide(z254=(306,-677.357))z254 and hide(z255=(305.773,-677.357))z255..hide(z256=(306,-662.743))z256
+ ..controls hide(z257=(304.563,-662.895))z257 and hide(z258=(303.878,-662.895))z258..hide(z259=(302.92,-662.895))z259
+ ..controls hide(z260=(301.936,-662.895))z260 and hide(z261=(301.179,-662.895))z261..hide(z262=(299.513,-662.743))z262
+ ..controls hide(z263=(299.892,-671.451))z263 and hide(z264=(299.968,-674.934))z264..hide(z265=(300.271,-688.942))z265
+ --hide(z266=(285.656,-675.161))z266..controls hide(z267=(277.857,-667.816))z267 and hide(z268=(273.693,-666))z268..hide(z269=(268.014,-666))z269
+ ..controls hide(z270=(259.306,-666))z270 and hide(z271=(254,-671.733))z271..hide(z272=(254,-681.068))z272
+ ..controls hide(z273=(254,-686.52))z273 and hide(z274=(255.495,-690.23))z274..hide(z275=(259.23,-693.94))z275
+ --hide(z276=(269.528,-695.227))z276--hide(z277=(269.528,-693.031))z277--hide(z278=(266.045,-692.047))z278
+ ..controls hide(z279=(261.653,-690.836))z279 and hide(z280=(260,-688.11))z280..hide(z281=(260,-683.037))z281
+ ..controls hide(z282=(260,-676.525))z282 and hide(z283=(263.996,-672))z283..hide(z284=(270.285,-672))z284
+ ..controls hide(z285=(275.964,-672))z285 and hide(z286=(281.567,-675.278))z286..cycle;
+ %draw PreeditedPath6;
+%drawoptions( withcolor black );
+ %dotlabels.rt(249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286);
+PreeditedPath7 = hide(z287=(330.015,-635.015))z287..controls hide(z288=(330.912,-637.705))z288 and hide(z289=(331.51,-639.499))z289..hide(z290=(333.004,-644.779))z290
+ ..controls hide(z291=(340.576,-645.477))z291 and hide(z292=(347.052,-647.967))z292..hide(z293=(356.616,-653.746))z293
+ --hide(z294=(357.712,-652.351))z294--hide(z295=(355.819,-648.266))z295..controls hide(z296=(345.358,-640.196))z296 and hide(z297=(339.082,-636.41))z297..cycle;
+ %draw PreeditedPath7;
+%drawoptions( withcolor black );
+ %dotlabels.rt(287,288,289,290,291,292,293,294,295,296,297);
+PreeditedPath8 = hide(z298=(270.736,-591))z298--hide(z299=(269.938,-591.477))z299..controls hide(z300=(271.632,-595.861))z300 and hide(z301=(272.429,-599.149))z301..hide(z302=(273.625,-607.02))z302
+ --hide(z303=(276.414,-607.02))z303--hide(z304=(276.414,-601.44))z304..controls hide(z305=(276.414,-599.647))z305 and hide(z306=(277.51,-599))z306..hide(z307=(280.499,-599))z307
+ --hide(z308=(327.026,-599))z308..controls hide(z309=(333.203,-599))z309 and hide(z310=(335.893,-599.093))z310..hide(z311=(342.867,-599.746))z311
+ --hide(z312=(343.465,-598.152))z312--hide(z313=(339.879,-594.167))z313..controls hide(z314=(342.469,-590.182))z314 and hide(z315=(343.196,-586.595))z315..hide(z316=(343.196,-581.315))z316
+ ..controls hide(z317=(343.196,-577.43))z317 and hide(z318=(342.584,-574.839))z318..hide(z319=(341.273,-572.747))z319
+ --hide(z320=(334.1,-562.784))z320..controls hide(z321=(330.912,-558.4))z321 and hide(z322=(322.643,-555))z322..hide(z323=(315.37,-555))z323
+ ..controls hide(z324=(303.812,-555))z324 and hide(z325=(296,-562.436))z325..hide(z326=(296,-572.946))z326
+ ..controls hide(z327=(296,-577.629))z327 and hide(z328=(297.606,-582.511))z328..hide(z329=(299.927,-585.101))z329
+ --hide(z330=(305.506,-591))z330--hide(z331=(306.602,-587.99))z331..controls hide(z332=(303.713,-585.201))z332 and hide(z333=(302,-581.315))z333..hide(z334=(302,-577.231))z334
+ ..controls hide(z335=(302,-568.862))z335 and hide(z336=(308.782,-563))z336..hide(z337=(319.455,-563))z337
+ ..controls hide(z338=(330.613,-563))z338 and hide(z339=(338.196,-569.219))z339..hide(z340=(338.196,-578.028))z340
+ ..controls hide(z341=(338.196,-583.208))z341 and hide(z342=(335.119,-591.001))z342..hide(z343=(333.004,-591.001))z343
+ --hide(z344=(311.584,-591))z344..controls hide(z345=(310.189,-591))z345 and hide(z346=(308.396,-589.843))z346..hide(z347=(306.602,-587.99))z347
+ --hide(z348=(305.506,-591))z348--cycle;
+PreeditedPath9 = hide(z349=(276.414,-548.138))z349--hide(z350=(276.414,-542.559))z350..controls hide(z351=(276.414,-540.765))z351 and hide(z352=(277.51,-540))z352..hide(z353=(280.499,-540))z353
+ --hide(z354=(332.108,-540))z354..controls hide(z355=(338.384,-540))z355 and hide(z356=(339.082,-540.304))z356..hide(z357=(339.281,-543.754))z357
+ --hide(z358=(339.58,-548.337))z358--hide(z359=(342.569,-548.337))z359..controls hide(z360=(342.27,-538.374))z360 and hide(z361=(342,-538.374))z361..hide(z362=(342,-535.884))z362
+ ..controls hide(z363=(342,-533.393))z363 and hide(z364=(341.701,-533.393))z364..hide(z365=(342,-523.43))z365
+ --hide(z366=(339.58,-523.43))z366--hide(z367=(339.281,-528.013))z367..controls hide(z368=(339.082,-531.4))z368 and hide(z369=(338.384,-532))z369..hide(z370=(332.108,-532))z370
+ --hide(z371=(270.736,-532))z371--hide(z372=(269.938,-532.596))z372..controls hide(z373=(271.632,-536.98))z373 and hide(z374=(272.429,-540.268))z374..cycle;
+ %draw PreeditedPath9;
+%drawoptions( withcolor black );
+ %dotlabels.rt(349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374);
+PreeditedPath10 = hide(z375=(291.607,-505.359))z375--hide(z376=(291.607,-501.374))z376--hide(z377=(282.641,-487.027))z377
+ ..controls hide(z378=(280.548,-483.739))z378 and hide(z379=(279.751,-483.042))z379..hide(z380=(277.958,-483.042))z380
+ ..controls hide(z381=(276.065,-483.042))z381 and hide(z382=(274.57,-484.436))z382..hide(z383=(274.57,-486.13))z383
+ ..controls hide(z384=(274.57,-487.624))z384 and hide(z385=(275.666,-489.418))z385..cycle;
+ %draw PreeditedPath10;
+%drawoptions( withcolor black );
+ %dotlabels.rt(375,376,377,378,379,380,381,382,383,384,385);
+PreeditedPath11 = hide(z386=(334.1,-489))z386--hide(z387=(342.569,-489.668))z387..controls hide(z388=(342.27,-483.192))z388 and hide(z389=(342,-483.192))z389..hide(z390=(342,-481.897))z390
+ ..controls hide(z391=(342,-481.399))z391 and hide(z392=(341.621,-478.908))z392..hide(z393=(342,-474.524))z393
+ --hide(z394=(339,-474.524))z394--hide(z395=(339.38,-478.41))z395..controls hide(z396=(339.281,-480.801))z396 and hide(z397=(338.484,-481))z397..hide(z398=(333.602,-481))z398
+ --hide(z399=(315.37,-481))z399..controls hide(z400=(300.824,-481))z400 and hide(z401=(296,-485.238))z401..hide(z402=(296,-496.941))z402
+ ..controls hide(z403=(296,-501.225))z403 and hide(z404=(296.948,-505.21))z404..hide(z405=(298.931,-508.996))z405
+ --hide(z406=(302.119,-514.015))z406--hide(z407=(308.595,-514.015))z407--hide(z408=(309.292,-511.686))z408
+ --hide(z409=(306.204,-510.391))z409..controls hide(z410=(301.521,-508.299))z410 and hide(z411=(301,-507.302))z411..hide(z412=(301,-502.719))z412
+ ..controls hide(z413=(301,-493.354))z413 and hide(z414=(304.635,-489.469))z414..hide(z415=(313.576,-489.17))z415
+ --hide(z416=(316.765,-488.999))z416--hide(z417=(329.916,-489))z417..controls hide(z418=(334.001,-491.926))z418 and hide(z419=(337.196,-498.285))z419..hide(z420=(337.196,-502.221))z420
+ ..controls hide(z421=(337.196,-506.206))z421 and hide(z422=(333.783,-510))z422..hide(z423=(329.816,-510))z423
+ ..controls hide(z424=(326.13,-510))z424 and hide(z425=(322.643,-507.884))z425..hide(z426=(320.75,-504.711))z426
+ ..controls hide(z427=(319.255,-502.193))z427 and hide(z428=(317.861,-496.654))z428..hide(z429=(316.765,-488.999))z429
+ --hide(z430=(313.576,-489.17))z430--hide(z431=(315.37,-499.033))z431..controls hide(z432=(317.861,-512.583))z432 and hide(z433=(322.543,-518))z433..hide(z434=(331.211,-518))z434
+ ..controls hide(z435=(338.982,-518))z435 and hide(z436=(343.196,-513.415))z436..hide(z437=(343.196,-505.708))z437
+ ..controls hide(z438=(343.196,-503.915))z438 and hide(z439=(342.998,-502.221))z439..cycle;
+ %draw PreeditedPath11;
+%drawoptions( withcolor black );
+ %dotlabels.rt(386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439);
+PreeditedPath12 = hide(z440=(321,-443.539))z440--hide(z441=(314.174,-440.55))z441--hide(z442=(314,-441.048))z442
+ --hide(z443=(314,-467.251))z443--hide(z444=(320.351,-469.941))z444--cycle;
+ %draw PreeditedPath12;
+%drawoptions( withcolor black );
+ %dotlabels.rt(440,441,442,443,444);
+PreeditedPath13 = hide(z445=(270.736,-424))z445--hide(z446=(269.938,-424.41))z446..controls hide(z447=(271.632,-428.794))z447 and hide(z448=(272.429,-432.082))z448..hide(z449=(273.625,-439.953))z449
+ --hide(z450=(276.414,-439.953))z450--hide(z451=(276.414,-434.374))z451..controls hide(z452=(276.414,-432.58))z452 and hide(z453=(277.51,-432))z453..hide(z454=(280.499,-432))z454
+ --hide(z455=(327.026,-432))z455..controls hide(z456=(333.203,-432))z456 and hide(z457=(335.893,-432.085))z457..hide(z458=(342.867,-432.68))z458
+ --hide(z459=(343.465,-431.086))z459--hide(z460=(339.879,-427.101))z460..controls hide(z461=(342.469,-423.115))z461 and hide(z462=(343.196,-419.529))z462..hide(z463=(343.196,-414.249))z463
+ ..controls hide(z464=(343.196,-410.363))z464 and hide(z465=(342.584,-407.773))z465..hide(z466=(341.273,-405.68))z466
+ --hide(z467=(334.1,-395.718))z467..controls hide(z468=(330.912,-391.334))z468 and hide(z469=(322.643,-388))z469..hide(z470=(315.37,-388))z470
+ ..controls hide(z471=(303.812,-388))z471 and hide(z472=(296,-395.409))z472..hide(z473=(296,-405.88))z473
+ ..controls hide(z474=(296,-410.562))z474 and hide(z475=(297.606,-415.444))z475..hide(z476=(299.927,-418.034))z476
+ --hide(z477=(305.506,-424))z477--hide(z478=(306.602,-420.924))z478..controls hide(z479=(303.713,-418.134))z479 and hide(z480=(302,-414.249))z480..hide(z481=(302,-410.164))z481
+ ..controls hide(z482=(302,-401.795))z482 and hide(z483=(308.782,-396))z483..hide(z484=(319.455,-396))z484
+ ..controls hide(z485=(330.613,-396))z485 and hide(z486=(338.196,-402.191))z486..hide(z487=(338.196,-410.961))z487
+ ..controls hide(z488=(338.196,-416.142))z488 and hide(z489=(335.119,-424.001))z489..hide(z490=(333.004,-424.001))z490
+ --hide(z491=(311.584,-424))z491..controls hide(z492=(310.189,-424))z492 and hide(z493=(308.396,-422.817))z493..hide(z494=(306.602,-420.924))z494
+ --hide(z495=(305.506,-424))z495--cycle;
+PreeditedPath14 = hide(z496=(276.414,-381.072))z496--hide(z497=(276.414,-375.492))z497..controls hide(z498=(276.414,-373.699))z498 and hide(z499=(277.51,-373))z499..hide(z500=(280.499,-373))z500
+ --hide(z501=(332.108,-373))z501..controls hide(z502=(338.384,-373))z502 and hide(z503=(339.082,-373.298))z503..hide(z504=(339.281,-376.688))z504
+ --hide(z505=(339.58,-381.271))z505--hide(z506=(342.569,-381.271))z506..controls hide(z507=(342.27,-371.308))z507 and hide(z508=(342,-371.308))z508..hide(z509=(342,-368.817))z509
+ ..controls hide(z510=(342,-366.326))z510 and hide(z511=(341.701,-366.326))z511..hide(z512=(342,-356.363))z512
+ --hide(z513=(339.58,-356.363))z513--hide(z514=(339.281,-360.946))z514..controls hide(z515=(339.082,-364.334))z515 and hide(z516=(338.384,-365))z516..hide(z517=(332.108,-365))z517
+ --hide(z518=(270.736,-365))z518--hide(z519=(269.938,-365.529))z519..controls hide(z520=(271.632,-369.913))z520 and hide(z521=(272.429,-373.201))z521..cycle;
+ %draw PreeditedPath14;
+%drawoptions( withcolor black );
+ %dotlabels.rt(496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521);
+PreeditedPath15 = hide(z522=(291.607,-338.289))z522--hide(z523=(291.607,-334.304))z523--hide(z524=(282.641,-319.957))z524
+ ..controls hide(z525=(280.548,-316.669))z525 and hide(z526=(279.751,-315.972))z526..hide(z527=(277.958,-315.972))z527
+ ..controls hide(z528=(276.065,-315.972))z528 and hide(z529=(274.57,-317.366))z529..hide(z530=(274.57,-319.06))z530
+ ..controls hide(z531=(274.57,-320.554))z531 and hide(z532=(275.666,-322.348))z532..cycle;
+ %draw PreeditedPath15;
+%drawoptions( withcolor black );
+ %dotlabels.rt(522,523,524,525,526,527,528,529,530,531,532);
+PreeditedPath16 = hide(z533=(334.1,-322))z533--hide(z534=(342.569,-322.598))z534..controls hide(z535=(342.27,-316.122))z535 and hide(z536=(342,-316.122))z536..hide(z537=(342,-314.827))z537
+ ..controls hide(z538=(342,-314.329))z538 and hide(z539=(341.621,-311.838))z539..hide(z540=(342,-307.454))z540
+ --hide(z541=(339,-307.454))z541--hide(z542=(339.38,-311.34))z542..controls hide(z543=(339.281,-313.731))z543 and hide(z544=(338.484,-314))z544..hide(z545=(333.602,-314))z545
+ --hide(z546=(315.37,-314))z546..controls hide(z547=(300.824,-314))z547 and hide(z548=(296,-318.219))z548..hide(z549=(296,-329.871))z549
+ ..controls hide(z550=(296,-334.155))z550 and hide(z551=(296.948,-338.14))z551..hide(z552=(298.931,-341.926))z552
+ --hide(z553=(302.119,-347.015))z553--hide(z554=(308.595,-347.015))z554--hide(z555=(309.292,-344.616))z555
+ --hide(z556=(306.204,-343.321))z556..controls hide(z557=(301.521,-341.229))z557 and hide(z558=(301,-340.232))z558..hide(z559=(301,-335.649))z559
+ ..controls hide(z560=(301,-326.284))z560 and hide(z561=(304.635,-322.399))z561..hide(z562=(313.576,-322.1))z562
+ --hide(z563=(316.765,-321.999))z563--hide(z564=(329.916,-322))z564..controls hide(z565=(334.001,-324.911))z565 and hide(z566=(337.196,-331.235))z566..hide(z567=(337.196,-335.151))z567
+ ..controls hide(z568=(337.196,-339.136))z568 and hide(z569=(333.783,-343))z569..hide(z570=(329.816,-343))z570
+ ..controls hide(z571=(326.13,-343))z571 and hide(z572=(322.643,-340.856))z572..hide(z573=(320.75,-337.641))z573
+ ..controls hide(z574=(319.255,-335.135))z574 and hide(z575=(317.861,-329.619))z575..hide(z576=(316.765,-321.999))z576
+ --hide(z577=(313.576,-322.1))z577--hide(z578=(315.37,-331.963))z578..controls hide(z579=(317.861,-345.513))z579 and hide(z580=(322.543,-351))z580..hide(z581=(331.211,-351))z581
+ ..controls hide(z582=(338.982,-351))z582 and hide(z583=(343.196,-346.389))z583..hide(z584=(343.196,-338.638))z584
+ ..controls hide(z585=(343.196,-336.845))z585 and hide(z586=(342.998,-335.151))z586..cycle;
+ %draw PreeditedPath16;
+%drawoptions( withcolor black );
+ %dotlabels.rt(533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586);
+PreeditedPath17 = hide(z587=(331.211,-292.211))z587..controls hide(z588=(331.211,-295.2))z588 and hide(z589=(334,-297.89))z589..hide(z590=(336.99,-297.89))z590
+ ..controls hide(z591=(339.979,-297.89))z591 and hide(z592=(342,-295.2))z592..hide(z593=(342,-292.311))z593
+ ..controls hide(z594=(342,-289.123))z594 and hide(z595=(339.668,-286.333))z595..hide(z596=(336.99,-286.333))z596
+ ..controls hide(z597=(334,-286.333))z597 and hide(z598=(331.211,-289.122))z598..cycle;
+ %draw PreeditedPath17;
+%drawoptions( withcolor black );
+ %dotlabels.rt(587,588,589,590,591,592,593,594,595,596,597,598);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% second featpost part
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ verygoodcone(true, black, blue, rmax, (0,0,zmax) );
+ numeric k;
+ drawoptions( withcolor blue );
+ for k = 1 upto 17:
+ fill closedpathinspace( PreeditedPath[k], converterfunc );
+ endfor;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% That's it!
+
+endfig;
+end
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/embroncordada.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/embroncordada.mp
new file mode 100644
index 00000000000..ccc08d09d80
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/embroncordada.mp
@@ -0,0 +1,57 @@
+% embroncordada.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+verbatimtex
+\documentclass{article}
+%\usepackage{pandora}
+\usepackage{palatino}
+\begin{document}
+etex
+
+beginfig(1);
+ picture embroncordada;
+ numeric u, v;
+ path pa;
+ u = 1mm;
+ v = 1.1mm;
+ z1 = (105u,250v);
+ z2 = (105u,220v);
+ z3 = (125u,200v);
+ z4 = (85u,180v);
+ z5 = (25u,150v);
+ z6 = (105u,120v);
+ z7 = (185u,150v);
+ z8 = (110u,170v);
+ z9 = (45u,150v);
+ z10= (100u,105v);
+ z11= (170u,150v);
+ z12= (90u,195v);
+ z13= (35u,150v);
+ z14= (120u,135v);
+ z15= (80u,100v);
+ z16= (115u,75v);
+ z17= (105u,50v);
+ pa = z1{down}..z2..z3..z4..z5..z6..z7..z8..z9..z10..
+ z11..z12..z13..z14..z15..z16..{down}z17;
+ ropepattern( pa, 8u, 35 );
+ embroncordada = thelabel( btex
+ \begin{tabular}{c}
+ \textsf{EMBRON} \\
+ \textsf{CORDADA}
+ \end{tabular}
+ etex scaled 8, (105u,150v) );
+ draw embroncordada;
+% dotlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/fakehole.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/fakehole.mp
new file mode 100644
index 00000000000..c1d28ea33c1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/fakehole.mp
@@ -0,0 +1,59 @@
+% fakehole.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+Spread := 23;
+f := (13,6,4.5);
+ShadowOn := true;
+LightSource := 10*(4,-1.7,2);
+beginfig(1);
+ numeric bigray, smaray, posray, posang, disang, aresiz, dislen;
+ numeric numl, numr, holang, i;
+ color pos, disaxe, holaxe;
+ aresiz := 13;
+ bigray := 2;
+ smaray := 0.25;
+ posray := 4;
+ posang := -10;
+ disang := 15;
+ dislen := 0.4;
+ holang := 115;
+ numl := 45;
+ disaxe := dislen*(cosd(disang),sind(disang),0);
+ pos := posray*(cosd(posang),sind(posang),0);
+ holaxe := (cosd(disang+90)*cosd(holang),
+ sind(disang+90)*cosd(holang),
+ sind(holang));
+ HoriZon := -bigray;
+ setthestage( 0.5*numl, aresiz );
+ rigorousdisc( smaray, true, pos, bigray, disaxe );
+ numr := floor(bigray/smaray);
+ for i=2-numr step 3 until -3:
+ fakehole( pos+i*smaray*holaxe, disaxe, smaray );
+ fakehole( pos-i*smaray*holaxe, disaxe, smaray );
+ endfor;
+endfig;
+
+ShadowOn := false;
+Spread := 25;
+ShiftV := 105.00mm*(0.5,1);
+beginfig(2);
+ numeric len, ray;
+ len = 10;
+ ray = 0.9;
+ f := (5,2*ray,1+1.5*ray);
+ viewcentr := (0,2.5*ray,1+0.5*ray);
+ drawoptions( withpen pencircle scaled 2.3pt );
+ kindofcube(false,true,black,0,0,0,1,len*ray,2);
+ numeric i;
+ for i=2 step 2 until len-1:
+ fakehole( (0,i*ray,1), red, ray );
+ endfor;
+endfig;
+
+end.
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/featpostlogo.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/featpostlogo.mp
new file mode 100644
index 00000000000..9e68e9899e6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/featpostlogo.mp
@@ -0,0 +1,29 @@
+% featpostlogo.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\newfont{\normald}{logod10 scaled 5000}
+\pagestyle{empty}
+\begin{document}
+etex
+
+input boxes;
+
+beginfig(1);
+ picture logo;
+ defaultdx := 3mm;
+ defaultdy := 2mm;
+ logo = thelabel.urt( btex {\normald FEATPOST} etex, origin );
+ boxit.thelogo( logo );
+ drawboxed( thelogo );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/ffcbob.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/ffcbob.mp
new file mode 100644
index 00000000000..3e4eff5a828
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/ffcbob.mp
@@ -0,0 +1,84 @@
+% ffcbob.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := 2*(15,0,2);
+Spread := 20;
+
+beginfig(1);
+ numeric phi, theta, back, numbacks, minnum, maxnum;
+ phi = 30;
+ theta = 80;
+ back = 7;
+ numbacks = 30;
+ minnum = 3;
+ maxnum = 15;
+ numeric upl[], dol[], pos[], len[], rai[] rao[];
+ upl1=1; dol1=17;pos1=-5.0; len1=2.0; rai1=1.5; rao1=6.5;
+ upl2=2; dol2=16;pos2=-3.0; len2=0.8; rai2=1.5; rao2=6.3;
+ upl3=3; dol3=15;pos3=-2.2; len3=0.4; rai3=1.5; rao3=4.8;
+ upl4=4; dol4=14;pos4=-1.8; len4=0.4; rai4=1.5; rao4=4.4;
+ upl5=5; dol5=13;pos5=-1.4; len5=0.4; rai5=1.5; rao5=4.2;
+ upl6=6; dol6=11;pos6=-1.0; len6=0.2; rai6=1.5; rao6=3.2;
+ upl7=7; dol7=12;pos7=-1.0; len7=0.2; rai7=4.0; rao7=4.6;
+ upl8=8; dol8=10;pos8=-0.8; len8=0.6; rai8=1.5; rao8=3.2;
+ upl9=9; dol9=7; pos9=-0.2; len9=0.4; rai9=1.5; rao9=3.2;
+ upl10=10;dol10=9;pos10=-0.2;len10=0.2;rai10=4.0;rao10=4.4;
+ upl11=11;dol11=8;pos11=0.0; len11=0.2;rai11=4.0;rao11=4.6;
+ upl12=12;dol12=6;pos12=0.2; len12=0.8;rai12=1.5;rao12=4.8;
+ upl13=13;dol13=5;pos13=1.0; len13=0.4;rai13=1.5;rao13=4.4;
+ upl14=14;dol14=3;pos14=1.4; len14=0.2;rai14=1.5;rao14=4.4;
+ upl15=15;dol15=4;pos15=1.4; len15=0.2;rai15=4.8;rao15=6.3;
+ upl16=16;dol16=2;pos16=1.6; len16=0.6;rai16=1.5;rao16=6.3;
+ upl17=17;dol17=1;pos17=2.2; len17=2.0;rai17=1.5;rao17=6.5;
+ color axe;
+ axe = (cosd(phi)*cosd(theta),sind(phi)*cosd(theta),sind(theta));
+ numeric i;
+ for i=0 upto numbacks:
+ draw rp(back*(1,2*i/numbacks-1,-1))--
+ rp(back*(-1,2*i/numbacks-1,-1))--
+ rp(back*(-1,2*i/numbacks-1,1)) withcolor 0.7background;
+ endfor;
+ numeric crux;
+ crux = cdotprod( f, axe );
+ numeric j, k;
+ if crux <= pos[minnum+1]:
+ for i=minnum upto maxnum:
+ j := maxnum;
+ forever:
+ exitunless dol[j] <> i;
+ j := decr( j );
+ endfor;
+% rigorousdisc(rai[j],true,axe*pos[j],rao[j],axe*len[j]);
+ rigorousdisc(0,true,axe*pos[j],rao[j],axe*len[j]);
+ endfor;
+ elseif crux > pos[maxnum]:
+ for i=minnum upto maxnum:
+% rigorousdisc(rai[i],true,axe*pos[i],rao[i],axe*len[i]);
+ rigorousdisc(0,true,axe*pos[i],rao[i],axe*len[i]);
+ endfor;
+ else:
+ k := minnum+2;
+ forever:
+ exitif crux <= pos[k];
+ k := incr( k );
+ endfor;
+ for i=minnum upto k-1:
+% rigorousdisc(rai[i],true,axe*pos[i],rao[i],axe*len[i]);
+ rigorousdisc(0,true,axe*pos[i],rao[i],axe*len[i]);
+ endfor;
+ for i=k upto maxnum:
+ j := maxnum;
+ forever:
+ exitunless dol[j] <> i;
+ j := decr( j );
+ endfor;
+% rigorousdisc(rai[j],true,axe*pos[j],rao[j],axe*len[j]);
+ rigorousdisc(0,true,axe*pos[j],rao[j],axe*len[j]);
+ endfor;
+ fi;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/fieldlinesnorma.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/fieldlinesnorma.mp
new file mode 100644
index 00000000000..ca3e1edb9b6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/fieldlinesnorma.mp
@@ -0,0 +1,104 @@
+% fieldlinesnorma.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 25;
+f := (10,-2,7);
+
+color posa, posb, perpd;
+numeric kfac;
+posa = -5*green;
+posb = 5*green;
+perpd = (1,0,1);
+kfac = -10;
+
+def vecfunc( expr posit )=
+ begingroup
+ save modula, modulb, field;
+ color field;
+ numeric modula, modulb;
+ modula = conorm( posit-posa );
+ modulb = conorm( posit-posb );
+ field = ( posit-posa )/(modula**3)+kfac*( posit-posb )/(modulb**3);
+ ( N(field) )
+ endgroup
+enddef;
+
+def potfunc( expr posit )=
+ begingroup
+ save field;
+ color field;
+ field = vecfunc( posit );
+ ( ncrossprod( field, perpd ) )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric i, lena, lenb, numa, numb, sa, sb, diffstep, ray;
+ color stp;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 85;
+ lenb = 20;
+ numa = 30;
+ numb = 18;
+ diffstep = 0.1;
+ ray = 0.5;
+ sa = 75;
+ sb = 90;
+ for i=sa step numa until (360+sa):
+ stp := posa+( ray*cosd(i), ray*sind(i), 0 );
+ oneline := fieldlinepath( lena, stp, diffstep, vecfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ for i=sb step numb until (360+sb):
+ stp := posb+( ray*cosd(i), ray*sind(i), 0 );
+ oneline := fieldlinepath( lenb, stp, -diffstep, vecfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(posa) withpen grossa;
+ draw rp(posb) withpen grossa;
+endfig;
+
+Spread := 17;
+f:= (10,-6,7);
+
+beginfig(2);
+ numeric i, lena, lenb, numa, numb, sa, sb, diffstep, ang;
+ color stp;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 85;
+ lenb = 125;
+ numa = 0.03;
+ numb = 0.30;
+ diffstep = 0.2;
+ ang = -90;
+ sa = 1.5;
+ sb = 4.5;
+ for i=sa step numa until (1.5+sa):
+ stp := posa+i*cosd(ang)*green+i*sind(ang)*ncrossprod(perpd,green);
+ oneline := fieldlinepath( lena, stp, diffstep, potfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ ang := 180;
+ for i=sb step numb until (3.7+sb):
+ stp := posb+i*cosd(ang)*green+i*sind(ang)*ncrossprod(perpd,green);
+ oneline := fieldlinepath( lenb, stp, diffstep, potfunc );
+ draw oneline withpen grossa;
+% draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(posa) withpen grossa;
+ draw rp(posb) withpen grossa;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/fis1prex.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/fis1prex.mp
new file mode 100644
index 00000000000..cff9d672d88
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/fis1prex.mp
@@ -0,0 +1,131 @@
+% fis1prex.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ numeric largtecto, molasfrac, altutecto, compcorda, espetecto;
+ numeric largmolas, largnum, cordafrac, espesfrac, largmolfr;
+ numeric u, alpha, i, numturns, alphafrac, alpharadi, rcf, rcd;
+ pen mainp, auxip;
+ path leftspr, rightsp, corda, boxtecto, traco, linhalpha, rcp;
+ pair esqutecto, diretecto, esquemola, direimola, espessvec;
+ largnum = 100;
+ u = 1mm;
+ molasfrac = 0.8;
+ espesfrac = 0.1;
+ cordafrac = 0.3;
+ alphafrac = 0.3;
+ largmolfr = 0.12;
+ rcf = 0.1;
+ numturns = 11;
+ alpha = 120;
+ mainp = pencircle scaled 0.4u;
+ auxip = pencircle scaled 0.2u;
+ largtecto = largnum*u;
+ rcd = rcf*largtecto;
+ largmolas = largmolfr*molasfrac*largtecto;
+ compcorda = cordafrac*largtecto;
+ espetecto = espesfrac*largtecto;
+ altutecto = 0.5*largtecto*molasfrac*cosd(alpha/2)/sind(alpha/2);
+ alpharadi = 2*alphafrac*altutecto;
+ esqutecto = (-largtecto/2,altutecto);
+ diretecto = (largtecto/2,altutecto);
+ esquemola = (-largtecto*molasfrac/2,altutecto);
+ direimola = (largtecto*molasfrac/2,altutecto);
+ espessvec = (0,espetecto);
+ boxtecto = esqutecto--
+ diretecto--
+ (diretecto+espessvec)--
+ (esqutecto+espessvec)--cycle;
+ traco = (origin--(dir(45))) scaled 6in;
+ for i=-largnum upto largnum:
+ draw traco shifted (2*i*u,0) withpen auxip;
+ endfor;
+ clip currentpicture to boxtecto;
+ pickup mainp;
+ draw esqutecto--diretecto;
+ leftspr = springpath(direimola,origin,numturns,largmolas,0.55);
+ rightsp = springpath(origin,esquemola,numturns,largmolas,0.55);
+ draw leftspr;
+ draw rightsp;
+ rcp = randomcirc( rcd, 0.1*rcd, 180 ) shifted (0,-compcorda);
+ draw rcp;
+ draw origin--(0,-compcorda) cutafter rcp;
+ linhalpha = fullcircle scaled alpharadi;
+ linhalpha := linhalpha cutafter rightsp;
+ linhalpha := linhalpha cutbefore leftspr;
+ draw linhalpha withpen auxip;
+ label(btex m etex scaled 3, (0,-compcorda) );
+ label.urt(btex $\alpha$ etex scaled 3, (0,alpharadi/2) );
+endfig;
+
+beginfig(2);
+ numeric u, basesize, baseheight, alphang, thetang, sfearsize;
+ numeric armsize, marginraise, totalraise, axeray, cardansize;
+ color basepos, tdorigin, oneaxe, otheraxe, rotaxbascenter, axedir;
+ color gluaxbascenter, rotrajcenter, cardanpos, refpoint, anotheraxe;
+ color armdir, armbasonepos, armbastwopos, sfearpos;
+ path glueaxebase, rotataxebase, rotrajector, axepath, sfearpath;
+ numeric armray;
+ u = 0.0125mm;
+ basesize = 30u;
+ baseheight = 3u;
+ alphang = 20;
+ thetang = -18;
+ armsize = 25u;
+ marginraise = 6u;
+ axeray = 3u;
+ cardansize = 3u;
+ sfearsize = 4u;
+ armray = 1.5u;
+ totalraise = armsize*sind(alphang)+marginraise+cardansize*cosd(alphang);
+ basepos = (0,0,-0.5baseheight);
+ f := -2*(-2basesize,-basesize,-5baseheight);
+ kindofcube(false, false, basepos, 0, 0, 0, 2basesize, 2basesize, baseheight );
+ tdorigin = (0,0,0);
+ oneaxe = (0,axeray/cosd(alphang),0);
+ otheraxe = (1,0,0);
+ anotheraxe = (0,cosd(alphang),-sind(alphang));
+ gluaxbascenter = tdorigin - (0,totalraise*sind(alphang),0);
+ glueaxebase = ellipticpath( gluaxbascenter, oneaxe, axeray*otheraxe );
+ axedir = (0,sind(alphang),cosd(alphang));
+ rotrajcenter = (0,0,totalraise);
+ rotaxbascenter = rotrajcenter-axedir*cardansize;
+ refpoint = rotrajcenter+axedir*cardansize;
+ rotataxebase = rigorouscircle( rotaxbascenter, axedir, axeray );
+ rotrajector = rigorouscircle( rotrajcenter, axedir, armsize );
+ axepath = twocyclestogether( glueaxebase, rotataxebase );
+ fill axepath withcolor background;
+ draw axepath;
+ draw rotataxebase;
+ drawarrow subpath (3,10.5) of rotrajector dashed evenly;
+% dotlabel.top( btex 1 etex, point 1 of rotrajector );
+% dotlabel.top( btex 5 etex, point 5 of rotrajector );
+% dotlabel.top( btex 3 etex, point 3 of rotrajector );
+ kindofcube(false,false,rotrajcenter,90,90-alphang,thetang,2cardansize,2cardansize,2cardansize);
+ draw rp(refpoint);
+ armdir := otheraxe*cosd(thetang)+anotheraxe*sind(thetang);
+ armbasonepos = rotrajcenter + cardansize*armdir;
+ armbastwopos = rotrajcenter + (armsize-sfearsize)*armdir; % NOT RIGOROUS
+ sfearpos = rotrajcenter + armsize*armdir;
+ rigorousdisc( 0, true, armbasonepos, armray, armbastwopos-armbasonepos );
+ sfearpath = rigorousfearpath( sfearpos, sfearsize );
+ fill sfearpath withcolor background;
+ draw sfearpath;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/fis3prex.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/fis3prex.mp
new file mode 100644
index 00000000000..0fbc862c3b2
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/fis3prex.mp
@@ -0,0 +1,481 @@
+% fis3prex.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+def platecap( expr Xpos, Shade, Angle, Oray, Iray, NumPoints ) =
+ begingroup
+ path perim, op, ip;
+ numeric i;
+ color axey, axmz, tp;
+ axey = cosd( Angle )*green + sind( Angle )*blue;
+ axmz = -cosd( Angle )*blue + sind( Angle )*green;
+ tp = Xpos*red;
+ op = rp( tp+Oray*axey )
+ for i=1 upto NumPoints:
+ ..rp(tp+Oray*(cosd(i*180/NumPoints)*axey+sind(i*180/NumPoints)*axmz))
+ endfor;
+ ip = rp( tp+Iray*axey )
+ for i=1 upto NumPoints:
+ ..rp(tp+Iray*(cosd(i*180/NumPoints)*axey+sind(i*180/NumPoints)*axmz))
+ endfor;
+ perim = op--reverse ip--cycle;
+ fill perim withcolor Shade;
+ draw perim
+ endgroup
+enddef;
+
+beginfig(1);
+ f := ( 4, 1, 2 );
+ numeric i, j, xsiz, ysiz, gstep, angl, vlen, fact, xa, xb, yb;
+ color vdir, bpos, ap, bp, cp, dp;
+ path base;
+ xsiz = 2;
+ ysiz = 3;
+ gstep = 0.23;
+ angl = 33;
+ vlen = 0.45;
+ fact = 1.3;
+ vdir = vlen*( 0, cosd(angl), sind(angl) );
+ xa = 0.5*gstep;
+ xb = (xsiz+0.5)*gstep;
+ yb = (ysiz+0.5)*gstep;
+ ap = (-xa,-xa,0);
+ bp = (-xa,yb,0);
+ cp = (xb,yb,0);
+ dp = (xb,-xa,0);
+ for i=0 upto xsiz:
+ for j=0 upto ysiz:
+ bpos := gstep*(i,j,0);
+ draw rp(bpos-fact*vdir)--rp(bpos);
+ drawarrow rp(bpos-fact*vdir)--rp(bpos-vdir);
+ endfor;
+ endfor;
+ base = rp(ap)--rp(bp)--rp(cp)--rp(dp)--cycle;
+ fill base withcolor 0.7background;
+ draw base;
+ for i=0 upto xsiz:
+ for j=0 upto ysiz:
+ bpos := gstep*(i,j,0);
+ draw rp(bpos+fact*vdir)--rp(bpos);
+ drawarrow rp(bpos)--rp(bpos+vdir);
+ endfor;
+ endfor;
+ draw rp(black)--rp( (0,0,vlen) ) dashed evenly;
+ angline( fact*vdir, (0,0,vlen), black, 0.7*vlen, btex 57$^\circ$ etex, urt );
+ label.top( btex $\vec{B}$ etex, rp(vdir) );
+endfig;
+
+beginfig(2);
+ f := ( 4, 3, 2 );
+ numeric i, numplates, xdelta, iangle, ang, oray, iray, numpois;
+ numeric aang, imray, omray, mmray, axray, numouts;
+ color shade, shadea, shadeb, p[];
+ path fucir, outerarrow, theknob;
+ numplates = 11;
+ numouts = 2;
+ xdelta = 0.1;
+ iangle = 53;
+ oray = 0.5;
+ iray = 0.07;
+ imray = 0.52;
+ omray = 0.67;
+ mmray = 0.64;
+ axray = 0.04;
+ numpois = 10;
+ shadea = 0.8background;
+ shadeb = 0.6background;
+ fucir = rigorouscircle( (-(numplates-1)*xdelta,0,0), red, imray );
+ outerarrow = subpath (1.7,2.3) of fucir;
+ p1 = ( -(numplates-1)*xdelta, imray, 0 );
+ p2 = ( -(numplates-1)*xdelta, omray, 0 );
+ p3 = ( -(numplates-2)*xdelta, imray, 0 );
+ p4 = ( -(numplates-2)*xdelta, omray, 0 );
+ p5 = ( -(numplates-4)*xdelta, mmray, 0 );
+ p6 = ( -(numplates-2)*xdelta, mmray, 0 );
+ p7 = ( -(numplates+1)*xdelta, mmray, 0 );
+ p8 = ( -(numplates-1)*xdelta, mmray, 0 );
+ p9 = ( -xdelta, cosd( 0.5*iangle )*0.5*oray, sind( 0.5*iangle )*0.5*oray );
+ p0 = ( 0, cosd( 0.5*iangle )*0.5*oray, -sind( 0.5*iangle )*0.5*oray );
+ for i=1-numplates upto 0:
+ if odd(i):
+ shade := shadea;
+ ang := iangle;
+ else:
+ shade := shadeb;
+ ang := 0;
+ fi;
+ platecap( i*xdelta, shade, ang, oray, iray, numpois );
+ background := shadea;
+ rigorousdisc( 0, true, (i*xdelta,0,0), axray, xdelta*red );
+ background := shadeb;
+ rigorousdisc( 0, true, (i*xdelta,-oray,0), axray, xdelta*red );
+ background := background;
+ endfor;
+ for i=1 upto numouts:
+ background := shadea;
+ rigorousdisc( 0, true, (i*xdelta,0,0), axray, xdelta*red );
+% background := shadeb;
+% rigorousdisc( 0, true, (i*xdelta,-oray,0), axray, xdelta*red );
+ endfor;
+ theknob = rigorousfearpath( ((numouts+1)*xdelta,0,0), 2*axray );
+ fill theknob;
+ draw theknob;
+ background := background;
+ draw rp(p1)--rp(p2);
+ draw rp(p3)--rp(p4);
+ drawarrow rp(p5)--rp(p6);
+ drawarrow rp(p7)--rp(p8);
+ drawarrow outerarrow;
+ label.ulft( btex $d$ etex, rp(p7) );
+ label( btex $A$ etex, rp(p9) );
+ label( btex $A$ etex, rp(p0) );
+endfig;
+
+beginfig(3);
+ f := ( 3, 2, 1 );
+ numeric oray, iray;
+ path opath, ipath;
+ color lRpos, Rpos, Ppos, zpos, rpos, spos;
+ oray = 0.5;
+ iray = 0.2oray;
+ opath = rigorouscircle( black, blue, oray );
+ ipath = rigorouscircle( black, blue, 0.2oray );
+ fill opath withcolor 0.7background;
+ fill ipath withcolor background;
+ draw opath;
+ draw ipath;
+ lRpos = ( oray, 0, 0 );
+ Rpos = 0.5lRpos;
+ Ppos = ( 0, 0, 2oray );
+ zpos = 0.5Ppos;
+ rpos = ( 0, iray, 0 );
+ spos = -Rpos;
+ drawarrow rp(black)--rp(lRpos);
+ drawarrow rp(black)--rp(Ppos);
+ drawarrow rp(black)--rp(rpos);
+ dotlabel.lft( btex $P$ etex, rp(Ppos) );
+ label.rt( btex $z$ etex, rp(zpos) );
+ label.ulft( btex $R$ etex, rp(Rpos) );
+ label.lrt( btex $r$ etex, rp(rpos) );
+ label( btex $\sigma$ etex, rp(spos) );
+endfig;
+
+beginfig(4);
+ f := ( 3, 4, 2 );
+ numeric raya, rayb, rayc, lena, lenb;
+ color baseac, baseav, basebc, basebv, rayabbeg, rayabend, lambdapos;
+ raya = 0.017;
+ rayb = 0.1;
+ rayc = 0.2;
+ lena = 1.4;
+ lenb = 0.6;
+ baseac = 0.5*lena*red;
+ baseav = -lena*red;
+ basebc = 0.5*lenb*red;
+ basebv = -lenb*red;
+ rayabbeg = ( 0.5*lenb, raya, 0 );
+ rayabend = ( 0.5*lenb, rayc, 0 );
+ lambdapos = ( 0, rayc, 0 );
+ rigorousdisc( 0, true, basebc, rayc, basebv );
+ rigorousdisc( 0, true, baseac, raya, baseav );
+ rigorousdisc( 0, false, basebc, rayc, basebv );
+ drawarrow rp( rayabbeg )--rp( rayabend );
+ label.bot( btex $R$ etex, rp( 0.5[rayabbeg,rayabend] ) );
+ label( btex $\lambda_t$ etex, rp ( lambdapos ) );
+ label.lrt( btex $\lambda_f$ etex, rp( 0.3[baseac,basebc] ) );
+endfig;
+
+beginfig(5);
+ f := ( 5, 5, 3 );
+ numeric i, numpoints, ray, aux, blen, bang, fa, fb, fc, fd;
+ path wirea, wireb, wirec, wired, wirepath;
+ color wa[], wb[], btip, xpos;
+ pen bigpen, smallpen;
+ numpoints = 36;
+ ray = 0.5;
+ blen = 0.8;
+ fa = -1.1;
+ fb = -0.8;
+ fc = -fb;
+ fd = -fa;
+ bang = -45;
+ btip = blen*(0,cosd( bang ), sind( bang ) );
+ for i=1 upto numpoints:
+ aux := i*180/numpoints;
+ wa[i] = ray*(red*cosd(aux)+green*sind(aux));
+% drawarrow rp( wa[i] )--rp( wa[i]+btip );
+ wb[i] = ray*(-red*cosd(aux)-blue*sind(aux));
+% drawarrow rp( wb[i] )--rp( wb[i]+btip );
+ endfor;
+ wirepath = for i=1 upto numpoints:
+ rp( wa[i] )-- endfor for i=1 upto numpoints:
+ rp( wb[i] )-- endfor cycle;
+ bigpen = pencircle scaled 3pt;
+ smallpen = pencircle scaled 2.2pt;
+ draw wirepath withpen bigpen;
+ wirea = rp( wb[numpoints] ) for i=1 upto numpoints:
+ --rp( wa[i] ) endfor;
+ wireb = rp( wa[numpoints] ) for i=1 upto numpoints:
+ --rp( wb[i] ) endfor;
+ wirec = rp( wb[numpoints-1] )--wirea--rp( wb[1] );
+% wired = rp( wa[numpoints-1] )--wireb--rp( wa[1] );
+ draw wireb withpen smallpen withcolor background;
+% cartaxes( 2ray, 2ray, 1.2ray );
+ draw rp( 2*ray*red )--rp( -2*ray*red ) dashed evenly;
+ draw rp( black )--rp( -ray*blue );
+ draw rp( black )--rp( ray*green );
+ for i=-1 upto 1:
+ xpos := (i*ray,0,0);
+ drawarrow rp( xpos+fa*btip )--rp( xpos+fb*btip );
+ drawarrow rp( xpos+fb*btip )--rp( xpos+fc*btip );
+ draw rp( xpos+fc*btip )--rp( xpos+fd*btip );
+ endfor;
+ squareangline( -ray*blue, ray*green, black, 0.1*ray);
+ draw wirea withpen bigpen;
+ draw wirec withpen smallpen withcolor background;
+ label.urt( btex $\vec{B}$ etex, rp( btip ) );
+endfig;
+
+beginfig(6);
+ path baset, sphere;
+ color va, vb, vc, qpos;
+ va = (0,0,0);
+ vb = (0.5,0.5*sqrt(3),0);
+ vc = (-0.5,0.5*sqrt(3),0);
+ baset = rp( va )--rp( vb )--rp( vc )--cycle;
+ draw baset;
+ qpos = (0,0.333*sqrt(3),0.333*sqrt(1-0.333*sqrt(3)) );
+ sphere = rigorousfearpath( qpos, 0.1 );
+ fill sphere withcolor background;
+ draw sphere;
+ label( btex +$q$ etex, rp( qpos ) );
+endfig;
+
+beginfig(7);
+ Spread := 50;
+ f := (4,6,3.5);
+ path fiodecima, fioabaixo, malhacub, rama, ramb, ramc;
+ path malhatet, ramd, rame;
+ pen grossa, nuclear, negat;
+ color p[];
+ numeric altura, margem, largneg, largpos, afast, lengax, lscal;
+ pair topo, base, decima, abaixo, centerfont, centerneg, centerpos;
+ pair a, b, c, d, tx, ty, tz;
+ altura = 2cm;
+ margem = 3mm;
+ largneg = 9mm;
+ largpos = 18mm;
+ afast = 5cm;
+ lengax = 0.7;
+ lscal = 2;
+ grossa = pencircle scaled 2.7pt;
+ nuclear = pencircle scaled 2.1pt;
+ negat = pencircle scaled 1.8pt;
+ p1 = (1,1,-1);
+ p2 = (-1,1,-1);
+ p3 = (-1,-1,-1);
+ p4 = (1,-1,-1);
+ p5 = (1,1,1);
+ p6 = (-1,1,1);
+ p7 = (-1,-1,1);
+ p8 = (1,-1,1);
+ p0 = (0,0,1);
+ p9 = (0,0,-1);
+ z1 = rp(p1);
+ z2 = rp(p2);
+ z3 = rp(p3);
+ z4 = rp(p4);
+ z5 = rp(p5);
+ z6 = rp(p6);
+ z7 = rp(p7);
+ z8 = rp(p8);
+ z0 = rp(p0);
+ z9 = rp(p9);
+ tx = rp( p1 - (lengax,0,0) );
+ ty = rp( p1 - (0,lengax,0) );
+ tz = rp( p1 + (0,0,lengax) );
+ topo = (xpart z0, altura + ypart z0);
+ base = (xpart z9, -altura + ypart z9);
+ decima = (afast + xpart topo, ypart topo);
+ abaixo = (afast + xpart base, ypart base);
+ centerfont = 0.5*(decima+abaixo);
+ centerpos = (xpart centerfont, 0.5*margem + ypart centerfont);
+ centerneg = (xpart centerfont, -0.5*margem + ypart centerfont);
+ fiodecima = z0--topo--decima--centerpos;
+ fioabaixo = z9--base--abaixo--centerneg;
+ a = ( -0.5*largpos + xpart centerfont, ypart centerpos);
+ b = ( 0.5*largpos + xpart centerfont, ypart centerpos);
+ c = ( -0.5*largneg + xpart centerfont, ypart centerneg);
+ d = ( 0.5*largneg + xpart centerfont, ypart centerneg);
+ malhacub = z1--z2--z3--z4--z1--z5--z6--z7--z8--z5;
+ malhatet = z2--z7--z4--z5--cycle;
+ rama = z2--z6;
+ ramb = z3--z7;
+ ramc = z4--z8;
+ ramd = z5--z7;
+ rame = z2--z4;
+ drawoptions( dashed evenly );
+ draw malhacub;
+ draw rama;
+ draw ramb;
+ draw ramc;
+ drawoptions( withpen grossa );
+ draw malhatet;
+ draw ramd;
+ draw rame;
+% drawoptions( withpen nuclear withcolor background );
+% draw malhatet;
+% draw ramd;
+% draw rame;
+ drawoptions();
+ draw fiodecima;
+ draw fioabaixo;
+ draw a--b;
+ drawarrow z1--tx withpen negat;
+ drawarrow z1--ty withpen negat;
+ drawarrow z1--tz withpen negat;
+ label.lrt(btex $x$ etex scaled lscal, tx);
+ label.llft(btex $y$ etex scaled lscal, ty);
+ label.lft(btex $z$ etex scaled lscal, tz);
+ linecap := butt;
+ draw c--d withpen negat;
+endfig;
+
+beginfig(8);
+ Spread := 50;
+ f := (6,6,3.5);
+ numeric squareside, sray, cdiameter, cray, distmargin, linemargin, eloing;
+ squareside = 1;
+ cdiameter = squareside/0.88623;
+ cray = cdiameter/2.0;
+ sray = squareside/2.0;
+ distmargin = 0.5;
+ linemargin = 0.15;
+ eloing = 0.4;
+ pen pena, penb, penc;
+ pena = pencircle scaled 1.3mm;
+ penb = pencircle scaled 0.95mm;
+ penc = pencircle scaled 0.4mm;
+ color tracecol, outcol, incol;
+ tracecol = 0.5white;
+ outcol = black;
+ incol = 0.876white;
+ color va, vb, vc, vd, cen, bs, bc, fs, fc, ds, dc;
+ va = (0,-sray,-sray);
+ vb = (0,sray,-sray);
+ vc = (0,sray,sray);
+ vd = (0,-sray,sray);
+ cen = (-distmargin,0,0);
+ bs = (0,-sray-linemargin,0);
+ bc = bs+cen;
+ fs = (0,sray+eloing,0);
+ ds = (0,sray+eloing-linemargin,0);
+ fc = fs+cen;
+ dc = ds+cen;
+ path rigcirc, carrpath, square, circ, sline, cline, dline;
+ square = rp(va)--rp(vb)--rp(vc)--rp(vd)--cycle;
+ circ = goodcirclepath( cen, red, cray );
+ rigcirc = rigorouscircle( cen, red, cray+linemargin );
+ carrpath = subpath (1,2) of rigcirc;
+ sline = rp(bs)--rp(fs);
+ cline = rp(bc)--rp(fc);
+ dline = rp(ds)--rp(dc);
+
+ draw cline withpen penc withcolor tracecol;
+ draw circ withpen pena withcolor outcol;
+ draw circ withpen penb withcolor incol;
+ draw sline withpen penc withcolor tracecol;
+ draw square withpen pena withcolor outcol;
+ draw square withpen penb withcolor incol;
+ drawdblarrow dline withpen penc withcolor tracecol;
+
+ pair begsarr, endsarr;
+ begsarr = rp((0,-sray-linemargin,linemargin));
+ endsarr = rp((0,-sray-linemargin,sray));
+ drawarrow begsarr--endsarr withpen penc withcolor tracecol;
+ drawarrow carrpath withpen penc withcolor tracecol;
+
+ label.lft( btex $I$ etex, rp((0,-sray-linemargin,sray-linemargin)) );
+ label.top( btex $+$ etex, point 1.5 of rigcirc );
+ label.top( btex $d$ etex, rp(dc) );
+endfig;
+
+beginfig(9);
+ Spread := 50;
+ f := (6,6,3.5);
+ numeric squareside, sray, cdiameter, cray, distmargin, linemargin, eloing;
+ squareside = 1;
+ cdiameter = squareside/0.88623;
+ cray = cdiameter/2.0;
+ sray = squareside/2.0;
+ distmargin = 0.5;
+ linemargin = 0.15;
+ eloing = 0.4;
+ pen pena, penb, penc;
+ pena = pencircle scaled 1.3mm;
+ penb = pencircle scaled 0.95mm;
+ penc = pencircle scaled 0.4mm;
+ color tracecol, outcol, incol;
+ tracecol = 0.5white;
+ outcol = black;
+ incol = 0.876white;
+ color va, vb, vc, vd, cen, bs, bc, fs, fc, ds, dc, os, oc, ncc;
+ va = (0,-sray,-sray);
+ vb = (0,sray,-sray);
+ vc = (0,sray,sray);
+ vd = (0,-sray,sray);
+ cen = (-distmargin,0,0);
+ bs = (0,-sray-linemargin,0);
+ bc = bs+cen;
+ fs = (0,sray+eloing,0);
+ ds = (0,sray+eloing-linemargin,0);
+ fc = fs+cen;
+ dc = ds+cen;
+ os = (linemargin,sray,0);
+ oc = (-distmargin-cdiameter-linemargin,sray,0);
+ ncc = (-distmargin-cray,sray,0);
+ path rigcirc, carrpath, square, circ, sline, cline, dline, oline;
+ square = rp(va)--rp(vb)--rp(vc)--rp(vd)--cycle;
+ circ = goodcirclepath( ncc, green, cray );
+ rigcirc = rigorouscircle( ncc, green, cray+linemargin );
+ carrpath = subpath (3,4) of rigcirc;
+ sline = rp(bs)--rp(fs);
+ cline = rp(bc)--rp(fc);
+ dline = rp(ds)--rp(dc);
+ oline = rp(os)--rp(oc);
+
+ draw oline withpen penc withcolor tracecol;
+ draw cline withpen penc withcolor tracecol;
+ draw circ withpen pena withcolor outcol;
+ draw circ withpen penb withcolor incol;
+ draw sline withpen penc withcolor tracecol;
+ draw square withpen pena withcolor outcol;
+ draw square withpen penb withcolor incol;
+ drawdblarrow dline withpen penc withcolor tracecol;
+
+ pair begsarr, endsarr;
+ begsarr = rp((0,-sray-linemargin,linemargin));
+ endsarr = rp((0,-sray-linemargin,sray));
+ drawarrow begsarr--endsarr withpen penc withcolor tracecol;
+ drawarrow carrpath withpen penc withcolor tracecol;
+
+ label.lft( btex $I$ etex, rp((0,-sray-linemargin,sray-linemargin)) );
+ label.top( btex $+$ etex, point 3.5 of rigcirc );
+ label.bot( btex $d$ etex, rp(dc) );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/geombasic.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/geombasic.mp
new file mode 100644
index 00000000000..168f1cc9fc5
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/geombasic.mp
@@ -0,0 +1,82 @@
+% geombasic.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+% Kind of graph that physicists do a lot. Play with the angles
+% and h a little to see what happens. Change the point of view f.
+% Change the position of symbols using the last argument of angline.
+
+beginfig(1);
+
+ f := (3,5,2);
+
+ Spread := 155;
+
+ ShiftV := origin;
+
+ gamma := 30;
+ theta := 15;
+ phi := 40;
+ h := 1.2;
+
+ p := 0.75;
+ ppp := 0.8;
+
+ mythick := 0.9pt;
+
+ color c[], n[], H;
+ c0 := (0,0,0);
+ n0 := (cosd(gamma),0,sind(gamma));
+ n1 := (cosd(gamma+theta),0,sind(gamma+theta));
+ n2 := (cosd(gamma)*cosd(phi),cosd(gamma)*sind(phi),sind(gamma));
+ n3 := (cosd(gamma+theta)*cosd(phi),
+ cosd(gamma+theta)*sind(phi),sind(gamma+theta));
+ n4 := (cosd(phi),sind(phi),0);
+ H := h*(-sind(gamma),0,cosd(gamma));
+ c1 := (0,0,Z(p*n1));
+ c2 := (0,0,Z(p*n2));
+ c3 := (1,0,0);
+ c4 := (0,0,1);
+ c5 := (X(H),0,0);
+ pickup pencircle scaled 1.25pt;
+ drawarrow rp(c0)..rp(n0);
+ drawarrow rp(c0)..rp(n3);
+ drawarrow rp(c0)..rp(H);
+ label.urt(btex $\vec{n}_0$ etex,rp(n0));
+ label.urt(btex $\vec{n}$ etex,rp(n3));
+ label.lft(btex $\vec{H}$ etex,rp(H));
+ pickup pencircle scaled mythick;
+ cartaxes(1,1,1);
+% draw rp(c0)--rp(p*n1) dashed evenly scaled 2;
+% draw rp(c0)--rp(p*n2) dashed evenly scaled 2;
+ draw rp(c0)--rp(c5)--rp(H) dashed evenly scaled 1.5;
+% draw rp(c1)..rp(p*n1) dashed evenly scaled 2;
+ draw rp(c1)..rp(p*n3) dashed evenly scaled 1.5;
+% draw rp(c2)..rp(p*n0) dashed evenly scaled 2;
+% draw rp(c2)..rp(p*n2) dashed evenly scaled 2;
+ draw rp(c0)..rp(n4) dashed evenly scaled 1.5;
+ angline(c3,n0,c0,ppp,btex $\gamma$ etex,lft);
+% angline(n0,n1,c0,p,btex $\theta$ etex,rt);
+% angline(p*n0,p*n2,c2,X(p*n0),btex $\phi$ etex,lrt);
+% angline(p*n1,p*n3,c1,X(p*n1),btex $\phi$ etex,ulft);
+% angline(n2,n3,c0,p,btex $\theta $ etex,urt);
+ angline(c4,H,c0,ppp,btex $\gamma$ etex,top);
+ angline(n4,n3,c0,p,btex $\gamma+\theta$ etex,lft);
+ angline(n4,c3,c0,p,btex $\phi$ etex,llft);
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/geomfiguei.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/geomfiguei.mp
new file mode 100644
index 00000000000..81abd780492
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/geomfiguei.mp
@@ -0,0 +1,71 @@
+% geomfiguei.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+
+ f := 3*(1.2,1.7,0.8);
+
+ Spread := 125;
+
+ color origr, nzero, nothr, ndxyl, vmagf, mfxzp, mfxyp, mfxxp;
+ numeric alphan, gamman, thetan, phiang, mfsize, axxc, ayyc, azzc;
+ numeric phiarmlen, alphafac;
+ axxc = 0.99;
+ ayyc = 0.87; % make this 1.28 when in twist-bend geometry
+ azzc = 0.82;
+ alphan = 170; % make this 90 to get the twist-bend geometry
+ gamman = 25;
+ thetan = 10;
+ phiang = 30;
+ mfsize = 1.25;
+ phiarmlen = 0.75;
+ alphafac = 1.4;
+ origr = (0,0,0);
+ nzero = (cosd(gamman),0,sind(gamman));
+ ndxyl = phiarmlen*(cosd(phiang),sind(phiang),0);
+ nothr = (cosd(phiang)*cosd(gamman+thetan),
+ sind(phiang)*cosd(gamman+thetan),sind(gamman+thetan));
+ vmagf = mfsize*(cosd(alphan)*sind(gamman),sind(alphan),
+ -cosd(alphan)*cosd(gamman));
+ mfxzp = (X(vmagf),0,Z(vmagf));
+ mfxyp = (X(vmagf),Y(vmagf),0);
+ mfxxp = (X(vmagf),0,0);
+ cartaxes( axxc, ayyc, azzc );
+ draw rp(origr)--rp(ndxyl) dashed evenly;
+ draw rp(origr)--rp(mfxzp)--rp(vmagf) dashed evenly;
+ draw rp(origr)--rp(mfxyp)--rp(vmagf) dashed evenly;
+ draw rp(origr)--rp(alphafac*mfxyp) dashed evenly;
+ draw rp(mfxzp)--rp(mfxxp)--rp(origr) dashed evenly;
+ draw rp(mfxyp)--rp(mfxxp) dashed evenly;
+ draw rp((0,0,Z(nothr)))--rp(nothr) dashed evenly;
+ angline(nzero,(1,0,0),origr,0.65,btex $\gamma$ etex,lft);
+ angline(ndxyl,(1,0,0),origr,0.5,btex $\phi$ etex,llft);
+ angline(ndxyl,nothr,origr,0.5,btex $\gamma+\theta$ etex,lft);
+ angline(vmagf,(0,0,1),origr,0.5,btex $\beta$ etex,top); % twist-bend
+ angline(mfxyp,(1,0,0),origr,0.8,btex $\alpha$ etex,bot);
+ pickup pencircle scaled 1.15pt;
+ drawarrow rp(origr)..rp(nzero);
+ drawarrow rp(origr)..rp(nothr);
+ drawarrow rp(origr)..rp(vmagf);
+ label.ulft(btex $\vec{n}_0$ etex,rp(nzero));
+ label.ulft(btex $\vec{n}$ etex,rp(nothr));
+ label.urt(btex $\vec{H}$ etex,rp(vmagf));
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/geommine.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/geommine.mp
new file mode 100644
index 00000000000..939fc35ed94
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/geommine.mp
@@ -0,0 +1,104 @@
+% geommine.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\usepackage{bbold}
+\begin{document}
+etex
+
+beginfig(1);
+
+ beta := 15;
+ alpha := 40;
+ psi := 26;
+ theta := 32;
+ phi := -33;
+ h := 1.35;
+ v := 0.4;
+ xlen := 1.2;
+ ylen := 0.65;
+ phirad := 0.67;
+
+ f := (3,5,3);
+ Spread := 100;
+
+ color c[], n[], H, h[], Vel, xloc, yloc, vx, vy;
+ c0 := (0,0,0);
+ cartaxes(xlen,ylen,1.0);
+ n0 := (cosd(beta),0,sind(beta));
+ n3 := (0,sind(phi),0);
+ n2 := n0 + n3;
+ n5 := n3 + cosd(phi)*n0;
+ n4 := cosd(theta)*n5;
+ Fx:=sind(alpha)*cosd(beta)-cosd(alpha)*cosd(psi)*sind(beta);
+ Fy:=cosd(alpha)*sind(psi);
+ Fz:=sind(alpha)*sind(beta)+cosd(alpha)*cosd(psi)*cosd(beta);
+ nx:=cosd(theta)*cosd(phi)*cosd(beta)-sind(theta)*sind(beta);
+ ny:=cosd(theta)*sind(phi);
+ nz:=cosd(theta)*cosd(phi)*sind(beta)+sind(theta)*cosd(beta);
+ n1 := (nx,ny,nz);
+ xloc := xlen*n1;
+ yloc := ylen*(-greenpart n1,redpart n1,0);
+ H := h*(Fx,Fy,Fz);
+ Vel := v*(Fx,Fy,Fz);
+ vx := v*sind(phi)*n1;
+ vy := v*cosd(phi)*N(yloc);
+ h4 := h*sind(phi)*n1;
+ h5 := h*cosd(phi)*N(yloc);
+ h2 := (-h*sind(beta)*cosd(alpha)*cosd(psi),
+ 0,
+ h*cosd(beta)*cosd(alpha)*cosd(psi));
+ h3 := (0,h*cosd(alpha)*sind(psi),0);
+ h1 := h2 + h3;
+ draw rp(n0)--rp(n2)--rp(n3)--rp(c0);
+ draw rp(c0)--rp(n4)--rp(n1);
+ draw rp(n5)--rp(n4);
+ draw rp(c0)--rp(h2)--rp(h1)--rp(h3)--cycle;
+ draw rp(c0)--rp(h1)--rp(H);
+% draw rp(h4)--rp(H)--rp(h5);
+ label.llft(btex $\vec{n}_0$ etex,rp(n0));
+ label.urt(btex $\vec{n}$ etex,rp(n1));
+ label.llft(btex $\vec{H}$ etex,rp(H));
+% label.urt(btex $\vec{v}$ etex,rp(Vel));
+% label.bot(btex $\mathbb{x}$ etex,rp(xloc));
+% label.bot(btex $\mathbb{y}$ etex,rp(yloc));
+% label.lrt(btex $\vec{v}_\mathbb{x}$ etex,rp(vx));
+% label.urt(btex $\vec{v}_\mathbb{y}$ etex,rp(vy));
+% label.lft(btex $\vec{H}_\mathbb{x}$ etex,rp(h4));
+% label.urt(btex $\vec{H}_\mathbb{y}$ etex,rp(h5));
+% pickup pencircle scaled 1pt;
+ angline(n0,n5,c0,phirad,btex $\phi$ etex,lft);
+% angline((0,1,0),yloc,c0,phirad,btex $\phi$ etex,rt);
+ angline(h2,h1,c0,0.5,btex $\psi$ etex,urt);
+ angline(H,h1,c0,0.9,btex $\alpha$ etex,top);
+ angline(n5,n1,c0,0.6,btex $\theta$ etex,ulft);
+ angline((0,0,1),h2,c0,0.5,btex $\beta$ etex,top);
+ angline((1,0,0),n0,c0,0.6,btex $\beta$ etex,rt);
+% drawarrow rp(c0)..rp(xloc);
+% drawarrow rp(c0)..rp(yloc);
+ pickup pencircle scaled 1.3pt;
+ drawarrow rp(c0)..rp(n0);
+ drawarrow rp(c0)..rp(n1);
+ drawarrow rp(c0)..rp(H);
+% drawarrow rp(c0)..rp(Vel);
+% drawarrow rp(c0)..rp(vx);
+% drawarrow rp(c0)..rp(vy);
+% drawarrow rp(c0)..rp(h4);
+% drawarrow rp(c0)..rp(h5);
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/globe.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/globe.mp
new file mode 100644
index 00000000000..22d0cf2bee1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/globe.mp
@@ -0,0 +1,32 @@
+% globe.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ color gammacnt;
+ numeric newradius, radius, aux, i, numc, foc, lc;
+ path conepath, latpath;
+ pen thickp;
+
+ f := (2,3,4);
+ viewcentr := 1.5*(1,1,1);
+ Spread := 200;
+ Shifts := 300;
+ radius = 1;
+ numc = 9;
+ thickp = pencircle scaled 1mm;
+
+ pickup thickp;
+ tropicalglobe( numc, black, radius, blue );
+ for i=1 upto numc: % longitudes
+ aux := (i-1)*180/numc;
+ gammacnt := (cosd(aux),sind(aux),0);
+ draw spatialhalfcircle(black,gammacnt,radius,true);
+ endfor;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/halfcirclesfear.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/halfcirclesfear.mp
new file mode 100644
index 00000000000..7074987e166
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/halfcirclesfear.mp
@@ -0,0 +1,43 @@
+% halfcirclesfear
+% L. Nobre G.
+% 2001
+
+%input featpost3Dplus2D;
+
+% input la3Dmacros;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ color centre, axpin, axpon, axpun;
+ numeric size, radii;
+ f := (4,1.5,3.5);
+ size = 0.5;
+ radii = 1;
+ centre = (0,0,0);
+ axpin = (0,0,1);
+ axpon = (0,1,0);
+ axpun = (1,0,0);
+ cartaxes( 1.2,1.2,0.8 );
+ pickup pencircle scaled 2;
+ draw rigorouscircle( centre, axpin, radii ) withcolor red;
+ draw goodcirclepath( centre, axpin, radii );
+ draw spatialhalfcircle( centre, axpon, size, true );
+ draw spatialhalfcircle( centre, axpon, size, false ) dashed evenly;
+ draw spatialhalfcircle( centre, axpun, size, true );
+ draw spatialhalfcircle( centre, axpun, size, false ) dashed evenly;
+ draw rigorousfearpath( centre, size );
+endfig;
+
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/hexagonaltrimesh.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/hexagonaltrimesh.mp
new file mode 100644
index 00000000000..316ca97482e
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/hexagonaltrimesh.mp
@@ -0,0 +1,25 @@
+% hexagonaltrimesh.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+def zsurface( expr xc, yc ) =
+ cosd(xc*57)*cosd(yc*57)+4*mexp(-(xc**2+yc**2)*6.4)
+enddef;
+
+f := 7*(4,1,5);
+Spread := 35;
+LightSource := 10*(4,-3,4);
+SubColor := 0.4background;
+
+beginfig(1);
+ numeric np, ssize;
+ path chair;
+ np = 40;
+ ssize = 15;
+
+ hexagonaltrimesh( true,np,ssize,zsurface);
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurface.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurface.mp
new file mode 100644
index 00000000000..b0d64e95612
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurface.mp
@@ -0,0 +1,153 @@
+% hiddensurface.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+% The big nice trick to draw 3D hidden line surfaces
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+numeric toplevel;
+toplevel = 2.2;
+
+def zsurface( expr xc, yc ) =
+ begingroup
+ numeric zout;
+ zout = yc**4 -xc*yc*(1-yc**2);
+ if zout > toplevel:
+ zout := toplevel;
+ fi;
+ ( zout )
+ endgroup
+enddef;
+
+def zline( expr yc ) =
+ begingroup
+ numeric zout;
+ zout = 4*yc*yc*yc/(1-3*yc*yc); %% I don't get it...
+ if zout > 3:
+ zout := 3;
+ fi;
+ ( zout )
+ endgroup
+enddef;
+
+f := (6,1,2);
+Spread := 67;
+
+beginfig(1);
+ numeric i, j, nx, ny, lowx, higx, lowy, higy, refz;
+ numeric posx, posy, posz, facz, lowl, higl, pensize;
+ color gridx[], pos, begcont, endcont, begconf, endconf;
+ path facex, descontjump;
+ pensize = 3pt;
+ nx = 20;
+ ny = 50;
+ lowy = -2.5;
+ higy = 1;
+ lowx = 1.5;
+ higx = 3;
+ refz = -2.5;
+ facz = 5;
+ for i=0 upto nx:
+ for j=0 upto ny:
+ posx := lowx + i*( higx - lowx )/nx;
+ posy := lowy + j*( higy - lowy )/ny;
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz;
+ gridx[j] := ( posx, posy, posz );
+ endfor;
+ pos := ( posx, -1, refz/facz );
+ facex := rp( pos )--rp( gridx0 );
+ for j=1 upto ny:
+ facex := facex--rp( gridx[j] );
+ endfor;
+ facex:=facex--rp((posx,1,refz/facz))--cycle;
+ unfill facex;
+ draw facex;
+ endfor;
+ lowl = -2.0;
+% higl = -0.7;
+ higl = -1.0;
+ for j=0 upto ny:
+ posy := lowl + j*( higl - lowl )/ny;
+ posx := zline( posy );
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz;
+ gridx[j] := ( posx, posy, posz );
+ endfor;
+ facex := rp( gridx0 );
+ for j=1 upto ny:
+ facex := facex--rp( gridx[j] );
+ endfor;
+ draw facex withcolor red; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ lowl := -1.4;
+ higl := -0.8;
+ for j=0 upto ny:
+ posy := lowl + j*( higl - lowl )/ny;
+ posx := -2*posy;
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz;
+ gridx[j] := ( posx, posy, posz );
+ endfor;
+ facex := rp( gridx0 );
+ for j=1 upto ny:
+ facex := facex--rp( gridx[j] );
+ endfor;
+ draw facex withcolor green;
+ lowl := -1.0;
+ higl := 0.5;
+ for j=0 upto 1:
+ posy := lowl + j*( higl - lowl );
+ posx := 2;
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz;
+ gridx[j] := ( posx, posy, posz );
+ endfor;
+% facex := rp( gridx0 );
+% for j=1 upto ny:
+% facex := facex--rp( gridx[j] );
+% endfor;
+% draw facex withcolor blue;
+ pickup pencircle scaled pensize;
+ draw rp(gridx0) withcolor red;
+ draw rp(gridx1) withcolor red;
+ posx := 2.83;
+ posy := -1.933;
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz;
+ draw rp((posx,posy,posz)) withcolor blue;
+ posy := 0.517;
+ posy := bracket(lowy,posy,higy);
+ draw rp((posx,posy,posz)) withcolor blue;
+ begconf = (1.15,-1,refz/facz);
+ endconf = (1.15, 1,refz/facz);
+ begcont = ( 1,-1,1.15*toplevel/facz);
+ endcont = (-1,-1,1.15*toplevel/facz);
+ pickup pencircle scaled 0.5pensize;
+ drawarrow rp(begconf)--rp(endconf);
+ drawarrow rp(begcont)--rp(endcont);
+ label.ulft( btex $\Lambda$ etex, rp(0.5*(begcont+endcont)) );
+ label.bot( btex $\Upsilon$ etex, rp(0.5*(begconf+endconf)) );
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurfaces.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurfaces.mp
new file mode 100644
index 00000000000..df698f038bf
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/hiddensurfaces.mp
@@ -0,0 +1,65 @@
+% hiddensurfaces.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+def zsurface( expr xc, yc ) =
+ begingroup
+ numeric zout;
+ zout = yc**4-xc*yc*(1-yc**2);
+ if zout > 1.5:
+ zout := 1.5;
+ fi;
+ ( zout )
+ endgroup
+enddef;
+
+f := (2.5,2,1.25);
+Spread := 127;
+
+beginfig(1);
+ numeric i, j, nx, ny, lowx, higx, lowy, higy, refz
+ posx, posy, posz, facz, counter;
+ color poi[][];
+ nx = 30;
+ ny = 30;
+ lowy = -2.5;
+ higy = 1;
+ lowx = 1.5;
+ higx = 3;
+ refz = 0;
+ facz = 5;
+ counter = 0;
+ for i=0 upto nx:
+ for j=0 upto ny:
+ posx := lowx + i*( higx - lowx )/nx;
+ posy := lowy + j*( higy - lowy )/ny;
+ posz := zsurface( posx, posy );
+ posx := bracket(lowx,posx,higx);
+ posy := bracket(lowy,posy,higy);
+ posz := posz/facz + refz;
+ poi[i][j] := ( posx, posy, posz );
+ endfor;
+ endfor;
+ for i=1 upto nx:
+ for j=1 upto ny:
+ counter := incr(counter);
+ npf[counter] := 3;
+ F[counter]p1 := poi[i-1][j-1];
+ F[counter]p2 := poi[i][j-1];
+ F[counter]p3 := poi[i][j];
+ counter := incr(counter);
+ npf[counter] := 3;
+ F[counter]p1 := poi[i-1][j-1];
+ F[counter]p2 := poi[i-1][j];
+ F[counter]p3 := poi[i][j];
+ endfor;
+ endfor;
+ NF := counter;
+ drawarrow rp((-1,-1,refz))--rp((1,-1,refz));
+ drawarrow rp((-1,-1,refz))--rp((-1,1,refz));
+ fill_faces( withcolor blue );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/inductionbob.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/inductionbob.mp
new file mode 100644
index 00000000000..19b47c44105
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/inductionbob.mp
@@ -0,0 +1,116 @@
+% inductionbob.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+numeric altura;
+altura = 0.35;
+
+f := (4,6,1);
+Spread := 200;
+LightSource := f+blue;
+ShadowOn := false;
+
+def spirala( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cgre, cblu, param[];
+ par1 = 4.5;
+ par2 = 0.3;
+ par3 = 0.2*par1;
+ param1 = par1*360*TheVal;
+ cred = -par2*sind( param1 );
+ cgre = ( TheVal - 1.0 )*par3;
+ cblu = par2*cosd( param1 );
+ ( (cred,cgre,cblu+altura) )
+ endgroup
+enddef;
+
+def spiralb( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cgre, cblu, param[];
+ par1 = 4.0;
+ par2 = 0.3;
+ par3 = 0.2*par1;
+ param1 = par1*360*TheVal;
+ cred = par2*sind( param1 );
+ cgre = TheVal*par3;
+ cblu = -par2*cosd( param1 );
+ ( (cred,cgre,cblu+altura) )
+ endgroup
+enddef;
+
+def innerloop( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cgre, cblu, param[];
+ par1 = 8;
+ par2 = 0.2;
+ param1 = par1+(360-2*par1)*TheVal;
+ cred = par2*cosd( param1 );
+ cgre = 0;
+ cblu = par2*sind( param1 );
+ ( (cred,cgre,cblu+altura) )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric xouterdev, xinnerdev, scalecir, scalelab;
+ color startp, begp, endp, finisp, ap, bp, cp, dp, ep, fp, gp;
+ pair startz, begz, endz, finisz, az, bz, cz, dz, ez, fz, gz;
+ path innerpath, outerpath, primarcir, secondcir;
+ pen mypen;
+ scalecir = 3cm;
+ scalelab = 4;
+ xouterdev = 1.4;
+ xinnerdev = 1.0;
+ mypen = pencircle scaled 4pt;
+ startp = spirala( 0 );
+ finisp = spiralb( 1 );
+ begp = innerloop( 0 );
+ endp = innerloop( 1 );
+ ap = ( xouterdev, Y(startp), Z(startp) );
+ bp = ( xouterdev, Y(startp), Z(finisp) );
+ dp = ( xouterdev, Y(finisp), Z(finisp) );
+ cp = 0.5[bp,dp];
+ ep = ( xinnerdev, Y(begp), Z(begp) );
+ fp = ( xinnerdev, Y(endp), Z(endp) );
+ gp = 0.5[ep,fp];
+ startz = rp( startp );
+ finisz = rp( finisp );
+ begz = rp( begp );
+ endz = rp( endp );
+ az = rp( ap );
+ bz = rp( bp );
+ cz = rp( cp );
+ dz = rp( dp );
+ ez = rp( ep );
+ fz = rp( fp );
+ gz = rp( gp );
+ emptyline( false, 1, black, 0.7background, 700, 0.8, 2, spirala );
+ outerpath = startz--az--bz--dz--finisz;
+ primarcir = fullcircle scaled scalecir shifted cz;
+ emptyline( false, 0.8, black, 0.4*(red+background), 150, 0.8, 2, innerloop );
+ innerpath = begz--ez--fz--endz;
+ secondcir = fullcircle scaled scalecir shifted gz;
+ draw innerpath withpen mypen;
+ unfill secondcir;
+ draw secondcir withpen mypen;
+ label( btex $V_S$ etex scaled scalelab, gz);
+ emptyline( true, 1, black, 0.7background, 700, 0.8, 2, spiralb );
+ draw outerpath withpen mypen;
+ unfill primarcir;
+ draw primarcir withpen mypen;
+ label( btex $V_P$ etex scaled scalelab, cz );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/joinedemptylines.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/joinedemptylines.mp
new file mode 100644
index 00000000000..a4a629d8afb
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/joinedemptylines.mp
@@ -0,0 +1,47 @@
+% joinedemptylines.mp
+% L. Nobre G.
+% 2001
+
+%input featpost3Dplus2D;
+
+numeric altura;
+altura = 1;
+
+f := (2,3,1.8+altura);
+Spread := 125;
+LightSource := 0.7*(4,-1,4);
+ShadowOn := true;
+
+def helixone( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cblu, param;
+ par1 = 3*360;
+ par2 = 0.3;
+ par3 = 0.8;
+ param = par1*TheVal;
+ cred = par2*cosd( param );
+ cblu = par2*sind( param );
+ ( (cred,cblu,par3*(-1+TheVal)+altura) )
+ endgroup
+enddef;
+
+def helixtwo( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cblu, param;
+ par1 = 3*360;
+ par2 = 0.1;
+ par3 = 0.8/3;
+ param = par1*TheVal;
+ cred = par2*cosd( param );
+ cblu = par2*sind( param );
+ ( (cred+0.2,cblu,par3*TheVal+altura) )
+ endgroup
+enddef;
+
+beginfig(1);
+ emptyline( false, 0.91, black, 0.5background, 360, 0.88, 2, helixone );
+ emptyline( true, 0.91, black, 0.5background, 120, 0.88, 2, helixtwo );
+ drawarrow rp((0.5,0,altura))--rp((0.32,0,altura));
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/kindofcube.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/kindofcube.mp
new file mode 100644
index 00000000000..c2e6a99f5a9
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/kindofcube.mp
@@ -0,0 +1,81 @@
+% kindofcube.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+Spread := 30;
+f := 5.4*(1.5,0.5,1);
+
+beginfig(1);
+ numeric gridstep, sidenumber, i, j, coord, aa, ab, ac;
+ color pa;
+ gridstep = 0.9;
+ sidenumber = 10;
+ coord = 0.5*sidenumber*gridstep;
+ for i=0 upto sidenumber:
+ for j=0 upto sidenumber:
+ pa := (-coord+j*gridstep,-coord+i*gridstep,0);
+ aa := uniformdeviate(360);
+ ab := uniformdeviate(180);
+ ac := uniformdeviate(90);
+ kindofcube( false, false, pa, aa, ab, ac, 0.4, 0.4, 0.9 );
+ endfor;
+ endfor;
+endfig;
+
+beginfig(2);
+ f := (4,1.0,0.5);
+ Spread := 120;
+ numeric lena, lenb, lenc, aa, ab, ac, angray, micr;
+ pair zeror;
+ color axa, axb, axc, returnedcorner, dummyc, auxx, auxy;
+ lena=0.3;
+ lenb=0.6;
+ lenc=0.9;
+ aa=130;
+ ab=20;
+ ac=70;
+ angray=0.7;
+ micr=0.01;
+ zeror=rp(black);
+ cartaxes(1,1,1);
+ axa = ( cosd(aa), sind(aa), 0 );
+ axb = axa*cosd(ab)+blue*sind(ab);
+ auxx= ( cosd(aa+90), sind(aa+90), 0);
+ auxy = ncrossprod( axb, auxx );
+ axc = auxx*cosd(ac)+auxy*sind(ac);
+ draw zeror--rp(axa);
+ draw zeror--rp(axb);
+ draw zeror--rp(-axa);
+ draw zeror--rp(axc);
+ draw zeror--rp(auxx);
+ label.rt( btex $a$ etex, rp(axa) );
+ label.rt( btex $b$ etex, rp(axb) );
+ label.lft( btex $c$ etex, rp(auxx) );
+ label.lft( btex $d$ etex, rp(axc) );
+ label.bot( btex $o$ etex, zeror );
+ angline( axa,red,black,angray,btex $\alpha_1$ etex,bot );
+ angline( axb,axa,black,angray,btex $\alpha_2$ etex,rt );
+ angline( axc,auxx,black,angray,btex $\alpha_3$ etex,lft );
+ squareangline( -axa,auxx,black,0.2);
+ kindofcube( true, true, black, aa, ab, ac, lena, lenb, lenc );
+ draw zeror--rp(blue) dashed evenly;
+ dotlabel.bot( btex $l_1$ etex, rp(lena*axb) );
+ dotlabel.rt( btex $l_2$ etex, rp(lenb*axc) );
+ dotlabel.top( btex $l_3$ etex, rp(lenc*ncrossprod(axb,axc) ) );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/labelconstruct.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/labelconstruct.mp
new file mode 100644
index 00000000000..45213320942
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/labelconstruct.mp
@@ -0,0 +1,30 @@
+% labelconstruct.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+f := 1.1*(2,1,0.5);
+ParallelProj := true;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ kindofcube(false,true,(0,-0.5,0),90,0,0,1.2,0.1,0.4);
+ kindofcube(false,true,(0,0,0),0,0,0,0.5,0.1,0.8);
+ labelinspace(false,(0.45,0.1,0.65),(-0.4,0,0),(0,0,0.1),
+ btex \framebox{\textsc{Label}} etex);
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/labelinspace.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/labelinspace.mp
new file mode 100644
index 00000000000..da51f50633f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/labelinspace.mp
@@ -0,0 +1,33 @@
+% labelinspace.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+f := (2,3,0.5);
+ParallelProj := true;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ cartaxes( 1, 1.3, 1 );
+ labelinspace( false, black, 0.8*blue, 0.7*red,
+ btex \framebox{$\frac{\sqrt{5}-1}{2}$} etex);
+ labelinspace( false, 0.8*blue, -0.8*blue, 0.6*green,
+ btex \framebox{$\phi$} etex);
+ labelinspace( true, 0.7*red, 0.6*green, -0.7*red,
+ btex \framebox{$\frac{1+\sqrt{5}}{2}$} etex);
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/magneticflux.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/magneticflux.mp
new file mode 100644
index 00000000000..c5f62220794
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/magneticflux.mp
@@ -0,0 +1,105 @@
+% magneticflux.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{palatino,mathpazo}
+\begin{document}
+etex
+
+TDAtiplen := 0.1; % tdarrow
+TDAhalftipbase := 0.04; % Three-Dimensional
+TDAhalfthick := 0.02; % Arrow
+ForePen := pencircle scaled 10pt;
+BackPen := pencircle scaled 6pt;
+
+numeric ranga;
+ranga = 30+uniformdeviate(120);
+
+def ellip( expr TheVal ) =
+ ( (cosd(360*TheVal),sind(360*TheVal)/sind(ranga),0) )
+enddef;
+
+beginfig(2);
+ f := ( 4, 1, 2 );
+ Spread := 90;
+ pen blackpen, whitepen;
+ numeric majoraxe, i, j, gridstepn, gridstep, gridstart, halen, rang;
+ numeric ellfocus, totdist, marginl;
+ path espira, partes, covere;
+ color avec, midvec;
+ halen = 1;
+ marginl = 0.14;
+ rang = 45+30*floor(uniformdeviate(3.9));
+ show rang;
+ avec = (0,cosd(rang),sind(rang))*halen;
+ blackpen = pencircle scaled 5pt;
+ whitepen = pencircle scaled 3pt;
+ majoraxe = 1.2 + uniformdeviate(0.8);
+ ellfocus = majoraxe +-+ 1;
+ gridstepn= 15;
+ gridstep = 2*majoraxe/(gridstepn-1);
+ gridstart= 0.5*gridstepn*gridstep;
+ espira = ellipticpath( black, -red, -green*majoraxe );
+ draw espira withpen blackpen;
+ undraw espira withpen whitepen;
+ for j=-1 step gridstep until 1:
+ for i=-gridstart step gridstep until gridstart:
+ midvec := (j,i,0);
+ totdist := conorm(midvec-(0,-ellfocus,0))+conorm(midvec-(0,ellfocus,0));
+ if 2*majoraxe-marginl > totdist:
+ tdarrow( midvec, midvec+avec );
+% draw rp(midvec) withpen whitepen;
+ fi;
+ endfor;
+ endfor;
+ partes = subpath (10.3,25.6) of espira;
+ covere = subpath (10,26) of espira;
+ draw partes withpen blackpen;
+ undraw covere withpen whitepen;
+endfig;
+
+beginfig(1);
+ f := ( 4, 1.9, 1.22 );
+ Spread := 90;
+ numeric nodc, lsc;
+ nodc = 10;
+ lsc = 2.4;
+ closedline( true, 200, 0.5, 1.75 )( ellip );
+ numeric i, j, circlesize, polar, phi;
+ color currpos, ini, fin, avec;
+ string comm;
+ avec = (0,cosd(ranga),sind(ranga));
+ circlesize = 1.86/nodc;
+ for i=0.93 step -circlesize until 0.4*circlesize:
+ polar := floor(6.28318*i/circlesize);
+ for j=1 upto polar:
+ phi := 360*j/polar;
+ currpos := i*(cosd(phi),sind(phi)/sind(ranga),0);
+ comm:="tdarrow("
+ & cstr( currpos )
+ & ","
+ & cstr( currpos + avec )
+ & ");";
+ getready( comm, currpos );
+ endfor;
+ endfor;
+ doitnow;
+ pickup pencircle scaled 2pt;
+ drawarrow rp((0,1.07/sind(ranga),0))--rp((0,2.47,0));
+ drawarrow rp((1.07,0,0))--rp((1.67,0,0));
+ angline((0,2.37,0),(0,0.93/sind(ranga),0)+avec,(0,0.93/sind(ranga),0),
+ 0.3, btex $\alpha$ etex scaled lsc, urt);
+ label.bot( btex $x$ etex scaled lsc, rp((1.67,0,0)) );
+ label.bot( btex $y$ etex scaled lsc, rp((0,2.47,0)) );
+endfig;
+
+
+verbatimtex
+\end{document}
+etex
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/nembiaxi.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/nembiaxi.mp
new file mode 100644
index 00000000000..99bfbc7b87b
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/nembiaxi.mp
@@ -0,0 +1,64 @@
+% nembiaxi.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+ f := 1.3*(4,5,3);
+ Spread := 70;
+
+ numeric hstep, hmax, hsdev, basestep, basemax, basesdev;
+ numeric i, j, k, angsdev, cylength, cyradius, basen, hn;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, hbase, aone;
+ numeric atwo, zcurr, counter;
+ color lenvec, currpos, xnoise, tmpcol;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nb
+ cylength := 0.45;
+ cyradius := 0.1;
+ basen := 5;
+ hn := 3;
+ basestep := cylength*1.65;
+ hstep := cylength;
+ basesdev := basestep*0.1;
+ hsdev := hstep*0.1;
+ hbase := -0.8;
+ angsdev := 12;
+
+ basemax := basen*basestep;
+ hmax := hn*hstep;
+ counter := 0;
+ for i=1 upto basen:
+ for j=1 upto basen:
+ hcurr := hbase;
+ forever:
+ exitunless hcurr < hmax+hbase;
+ hcurr := hcurr + hstep;
+ zcurr := hcurr + hsdev*normaldeviate;
+ xcurr := i*basestep + basesdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ aone := uniformdeviate( 10 )-5;
+ atwo := angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone );
+ vcx := sind( atwo )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ xnoise := ( sind( angsdev*normaldeviate ), 0, 0 );
+ xnoise := green + xnoise;
+ tmpcol := ncrossprod( ( vcx, vcy, vcz ), xnoise );
+ lenvec := cylength*tmpcol;
+% rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ counter := incr( counter );
+ generateonebiax( counter, aone, atwo, cylength,
+ 90, 0.35*cylength, currpos );
+ endfor;
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( false, 7, true );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/nemsaddl.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/nemsaddl.mp
new file mode 100644
index 00000000000..ccc7d9852a1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/nemsaddl.mp
@@ -0,0 +1,86 @@
+% nemsaddl.mp and nemsplay.mp and nemtwist.mp and nembends.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+ f := 2*(5,3,4);
+ Spread := 70;
+
+ numeric hstep, hmax, hsdev, basestep, basemax, basesdev;
+ numeric i, j, k, angsdev, cylength, cyradius, basen, hn;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, hbase, aone;
+ numeric atwo, zcurr, angstep;
+ color lenvec, currpos;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% splay, sddle and twist
+ angstep := 10;
+ cylength := 0.6;
+ cyradius := 0.1;
+ basen := 3;
+ hn := 1;
+ basestep := cyradius*4.2;
+ hstep := cylength*1.4;
+ basesdev := cyradius*0.003;
+ hsdev := hstep*0.005;
+ hbase := -0.8;
+ angsdev := 3;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bend
+% angstep := 15;
+% cylength := 0.6;
+% cyradius := 0.1;
+% basen := 3;
+% hn := 1;
+% basestep := cylength*1.6;
+% hstep := cyradius*3.4;
+% basesdev := basestep*0.01;
+% hsdev := hstep*0.005;
+% hbase := -0.8;
+% angsdev := 3;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ basemax := basen*basestep;
+ hmax := hn*hstep;
+ for i=-basen upto basen:
+ for j=-basen upto basen:
+ hcurr := hbase;
+ forever:
+ exitunless hcurr < hmax+hbase;
+ hcurr := hcurr + hstep;
+ zcurr := hcurr + hsdev*normaldeviate;
+ xcurr := i*basestep + basesdev*normaldeviate;
+ ycurr := j*basestep + basesdev*normaldeviate;
+ aone := angle((xcurr,ycurr))+angsdev*normaldeviate;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atwo := ( i ++ j )*angstep + angsdev*normaldeviate;
+% vcz := cosd( atwo );
+% vcy := sind( atwo )*sind( aone ); % pure-splay
+% vcx := sind( atwo )*cosd( aone ); % pure-splay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atwo := ( i ++ j )*angstep + angsdev*normaldeviate;
+% vcz := cosd( atwo );
+% vcy := sind( atwo )*sind( aone ); % saddle-splay
+% vcx := -sind( atwo )*cosd( aone ); % saddle-splay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ atwo := ( i ++ j )*angstep + angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone+90 );% pure-twist
+ vcx := sind( atwo )*cosd( aone+90 );% pure-twist
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atwo := j *angstep + angsdev*normaldeviate;
+% vcz := sind( atwo );
+% vcy := cosd( atwo ); % pure-bend
+% vcx := 0; % pure-bend
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+ rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ endfor;
+ endfor;
+ endfor;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/nsmetica.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/nsmetica.mp
new file mode 100644
index 00000000000..d13a33e1cc3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/nsmetica.mp
@@ -0,0 +1,60 @@
+% nsmetica.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+ f := 2*(5,3,2);
+ Spread := 70;
+ NF := 0;
+
+ numeric hstep, hmax, hsdev, basestep, basemax, basesdev;
+ numeric i, j, k, angsdev, cylength, cyradius, basen, hn;
+ numeric vcx, vcy, vcz, hcurr, xcurr, ycurr, hbase, aone;
+ numeric atwo, zcurr, counter;
+ color lenvec, currpos;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sma
+ cylength := 0.45;
+ cyradius := 0.1;
+ basen := 11;
+ hn := 3;
+ basestep := cyradius*2.4;
+ hstep := cylength*2.1;
+ basesdev := cyradius*0.3;
+ hsdev := hstep*0.04;
+ hbase := -0.8;
+ angsdev := 7;
+
+ basemax := basen*basestep;
+ hmax := hn*hstep;
+ hcurr := hbase;
+ counter := 0;
+ for k=1 upto hn:
+ hcurr := hcurr + hstep;
+ for i=1 upto basen:
+ for j=1 upto basen:
+ zcurr := hcurr + hsdev*normaldeviate;
+ xcurr := (i-1)*basestep + uniformdeviate( basestep );
+ ycurr := (j-1)*basestep + uniformdeviate( basestep );
+ aone := uniformdeviate( 360 );
+ atwo := angsdev*normaldeviate;
+ vcz := cosd( atwo );
+ vcy := sind( atwo )*sind( aone );
+ vcx := sind( atwo )*cosd( aone );
+ currpos := ( xcurr, ycurr, zcurr );
+ lenvec := cylength*( vcx, vcy, vcz );
+ counter := incr( counter );
+ generatedirline( counter, aone, 90-atwo, cylength, currpos );
+% rigorousdisc( 0, true, currpos-0.5*lenvec, cyradius, lenvec);
+ endfor;
+ endfor;
+ endfor;
+ NL := counter;
+ director_invisible( true, 5, false );
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/parafuso.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/parafuso.mp
new file mode 100644
index 00000000000..74e8cda3e77
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/parafuso.mp
@@ -0,0 +1,100 @@
+% parafuso.mp
+% L. Nobre G.
+% 2005
+
+%input featpost3Dplus2D;
+
+def theline( expr TheVal ) =
+ begingroup
+ numeric par[], cred, cgre, cblu, param;
+ par0 = 0;
+ par1 = 6*360;
+ par2 = 0.3;
+ par3 = 850;
+ param = par0+TheVal*(par1-par0);
+ cred = -par2*cosd( param );
+ cblu = par2*sind( param );
+ cgre = param/par3;
+ ( (cred,cgre,cblu) )
+ endgroup
+enddef;
+
+def loxodrome( expr TheVal ) =
+ begingroup
+ numeric cred, cgre, cblu, alpha, theta, ratio, radio;
+ ratio = 22;
+ radio = 2;
+ theta = ratio*180*TheVal;
+ alpha = 170*TheVal-85;
+ cred = radio*cosd(theta)*cosd(alpha);
+ cgre = radio*sind(theta)*cosd(alpha);
+ cblu = radio*sind(alpha);
+ ( (cred,cgre,cblu) )
+ endgroup
+enddef;
+
+f := (2,4,1.8);
+Spread := 77;
+ShadowOn := false;
+
+beginfig(1);
+ numeric axsize, zaxpos, zaxlen;
+ color xbeg, xend, ybeg, yend, zbeg, zend;
+ axsize = 0.85;
+ zaxpos = 0.55;
+ zaxlen = 2.1;
+ pickup pencircle scaled 1.5pt;
+ xbeg = (axsize,0,0);
+ xend = (-axsize,0,0);
+ ybeg = (0,0,-axsize);
+ yend = (0,0,axsize);
+ zbeg = (zaxpos,-zaxpos,0);
+ zend = (zaxpos,zaxlen,0);
+ drawarrow rp( xbeg )--rp( xend );
+ drawarrow rp( ybeg )--rp( yend );
+% defaultfont := "putr8r";
+ defaultscale := 1.95;
+ label.rt( "A", rp( xend ) );
+ label.lft( "B", rp( yend ) );
+ emptyline( false, 1, black, 0.5background, 1000, 0.82, 2, theline );
+ drawarrow rp( zbeg )--rp( zend );
+ label.bot( "C", rp( zend ) );
+endfig;
+
+beginfig(2);
+ numeric axsize, zaxpos, zaxlen;
+ color xbeg, xend, ybeg, yend, zbeg, zend;
+ axsize = 0.85;
+ zaxpos = 0.55;
+ zaxlen = 2.1;
+ pickup pencircle scaled 1.5pt;
+ xbeg = (axsize,0,0);
+ xend = (-axsize,0,0);
+ ybeg = (0,0,-axsize);
+ yend = (0,0,axsize);
+ zbeg = (zaxpos,-zaxpos,0);
+ zend = (zaxpos,zaxlen,0);
+ drawarrow rp( xbeg )--rp( xend );
+ drawarrow rp( ybeg )--rp( yend );
+% defaultfont := "putr8r";
+ defaultscale := 0.65;
+ label.rt( "X", rp( xend ) );
+ label.lft( "Y", rp( yend ) );
+ closedline( false, 70, 0.5, 0.95, theline );
+ drawarrow rp( zbeg )--rp( zend );
+ label.bot( "Z", rp( zend ) );
+ doitnow;
+endfig;
+
+f := (2,4,2.8);
+beginfig(3);
+ NCL := 0;
+ Nobjects := 0;
+ closedline( false, 270, 0.5, 0.85, loxodrome );
+ doitnow;
+endfig;
+
+end;
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/pathofstraightline.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/pathofstraightline.mp
new file mode 100644
index 00000000000..06711c223f3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/pathofstraightline.mp
@@ -0,0 +1,29 @@
+% pathofstraightline.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+SphericalDistortion := true;
+Spread := 100;
+f := 0.4*(1.5,0.5,1);
+
+beginfig(1);
+ numeric gridstep, sidenumber, i, coord;
+ color pa, pb, pc, pd;
+ gridstep = 0.1;
+ sidenumber = 10;
+ coord = 0.5*sidenumber*gridstep;
+ for i=0 upto sidenumber:
+ pa := (-coord,-coord+i*gridstep,0);
+ pb := (coord,-coord+i*gridstep,0);
+ pc := (-coord+i*gridstep,-coord,0);
+ pd := (-coord+i*gridstep,coord,0);
+ draw pathofstraightline( pa, pb );
+ draw pathofstraightline( pc, pd );
+ endfor;
+endfig;
+
+end.
+
+ \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/photoreverse.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/photoreverse.mp
new file mode 100644
index 00000000000..542fd1f3508
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/photoreverse.mp
@@ -0,0 +1,242 @@
+% photoreverse.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+% Converted from PostScript(TM) to MetaPost by pstoedit
+% MetaPost backend contributed by Scott Pakin <pakin@uiuc.edu>
+% pstoedit is Copyright (C) 1993 - 2003 Wolfgang Glunz <wglunz@pstoedit.net>
+
+% MetaPost source tuned by PstoeditMpostPreeditor (lex scanner)
+% and edited by L. Nobre G. <nobre@lince.cii.fc.ul.pt>
+
+% Generate structured PostScript
+prologues := 1;
+
+% Display a given string with its *baseline* at a given location
+% and with a given rotation angle
+vardef showtext(expr origin)(expr angle)(expr string) =
+ draw string infont defaultfont scaled defaultscale
+ rotated angle shifted origin;
+enddef;
+
+beginfig(1);
+ path PreeditedPath[];
+ linecap := butt;
+ linejoin := mitered;
+ PreeditedPath1 = hide(z1=(267.637,309.195))z1..controls hide(z2=(265.005,308.373))z2 and hide(z3=(262.069,307.351))z3..hide(z4=(261.056,306.906))z4
+ ..controls hide(z5=(260.051,306.463))z5 and hide(z6=(257.254,305.728))z6..hide(z7=(254.841,305.272))z7
+ ..controls hide(z8=(250.692,304.488))z8 and hide(z9=(204.457,292.788))z9..hide(z10=(182.447,286.951))z10
+ ..controls hide(z11=(176.816,285.458))z11 and hide(z12=(168.096,283.167))z12..hide(z13=(163.069,281.859))z13
+ ..controls hide(z14=(151.222,278.777))z14 and hide(z15=(141.515,276.205))z15..hide(z16=(134.184,274.205))z16
+ ..controls hide(z17=(130.967,273.328))z17 and hide(z18=(125.044,271.795))z18..hide(z19=(121.022,270.8))z19
+ ..controls hide(z20=(112.027,268.574))z20 and hide(z21=(85.2788,261.351))z21..hide(z22=(82.2654,260.334))z22
+ ..controls hide(z23=(81.0576,259.926))z23 and hide(z24=(74.8799,258.292))z24..hide(z25=(68.5181,256.697))z25
+ ..controls hide(z26=(53.8198,253.011))z26 and hide(z27=(54.844,253.994))z27..hide(z28=(56.676,245.334))z28
+ ..controls hide(z29=(57.3293,242.246))z29 and hide(z30=(56.3792,241.622))z30..hide(z31=(47.3118,239.178))z31
+ ..controls hide(z32=(35.9773,236.124))z32 and hide(z33=(35.1968,235.536))z33..hide(z34=(38.4636,232.521))z34
+ ..controls hide(z35=(40.325,230.802))z35 and hide(z36=(46.4053,219.375))z36..hide(z37=(48.1816,214.256))z37
+ ..controls hide(z38=(50.9392,206.31))z38 and hide(z39=(75.4822,148.371))z39..hide(z40=(81.2634,136.159))z40
+ ..controls hide(z41=(83.6174,131.186))z41 and hide(z42=(85.5562,126.827))z42..hide(z43=(85.5562,126.506))z43
+ ..controls hide(z44=(85.5562,124.811))z44 and hide(z45=(87.6768,124.222))z45..hide(z46=(90.6018,125.105))z46
+ ..controls hide(z47=(94.1848,126.187))z47 and hide(z48=(94.4399,127.076))z48..hide(z49=(91.2598,127.398))z49
+ ..controls hide(z50=(86.803,127.85))z50 and hide(z51=(81.7302,144.202))z51..hide(z52=(66.9248,205.847))z52
+ ..controls hide(z53=(57.2651,246.065))z53 and hide(z54=(57.3979,243.248))z54..hide(z55=(65.0811,244.906))z55
+ ..controls hide(z56=(67.3086,245.386))z56 and hide(z57=(71.2236,246.393))z57..hide(z58=(73.8562,247.162))z58
+ ..controls hide(z59=(76.4578,247.923))z59 and hide(z60=(81.7537,249.412))z60..hide(z61=(85.5562,250.453))z61
+ ..controls hide(z62=(89.3586,251.494))z62 and hide(z63=(93.6614,252.702))z63..hide(z64=(95.0623,253.122))z64
+ ..controls hide(z65=(96.4841,253.549))z65 and hide(z66=(99.0842,254.15))z66..hide(z67=(100.912,254.475))z67
+ ..controls hide(z68=(102.711,254.795))z68 and hide(z69=(106.689,255.777))z69..hide(z70=(109.687,256.642))z70
+ ..controls hide(z71=(115.705,258.378))z71 and hide(z72=(115.391,258.29))z72..hide(z73=(129.431,262.147))z73
+ ..controls hide(z74=(134.842,263.633))z74 and hide(z75=(139.964,265.139))z75..hide(z76=(140.765,265.48))z76
+ ..controls hide(z77=(141.57,265.822))z77 and hide(z78=(145.519,266.957))z78..hide(z79=(149.541,268.003))z79
+ ..controls hide(z80=(153.562,269.049))z80 and hide(z81=(158.005,270.236))z81..hide(z82=(159.412,270.641))z82
+ ..controls hide(z83=(164.668,272.153))z83 and hide(z84=(171.332,273.79))z84..hide(z85=(180.984,275.938))z85
+ ..controls hide(z86=(185.445,276.931))z86 and hide(z87=(190.982,278.282))z87..hide(z88=(193.416,278.972))z88
+ ..controls hide(z89=(195.835,279.657))z89 and hide(z90=(203.214,281.625))z90..hide(z91=(209.869,283.359))z91
+ ..controls hide(z92=(216.523,285.094))z92 and hide(z93=(224.23,287.209))z93..hide(z94=(227.053,288.076))z94
+ ..controls hide(z95=(229.905,288.952))z95 and hide(z96=(233.467,289.972))z96..hide(z97=(235.097,290.379))z97
+ ..controls hide(z98=(236.722,290.785))z98 and hide(z99=(239.484,291.549))z99..hide(z100=(241.312,292.098))z100
+ ..controls hide(z101=(243.136,292.645))z101 and hide(z102=(247.309,293.664))z102..hide(z103=(250.672,294.384))z103
+ ..controls hide(z104=(255.718,295.463))z104 and hide(z105=(258.712,296.887))z105..hide(z106=(255.937,296.887))z106
+ ..controls hide(z107=(255.547,296.887))z107 and hide(z108=(255.206,297.399))z108..hide(z109=(255.206,297.984))z109
+ ..controls hide(z110=(255.206,298.587))z110 and hide(z111=(255.864,299.081))z111..hide(z112=(256.669,299.081))z112
+ ..controls hide(z113=(257.546,299.081))z113 and hide(z114=(258.131,298.613))z114..hide(z115=(258.131,297.911))z115
+ ..controls hide(z116=(258.131,296.975))z116 and hide(z117=(258.643,296.837))z117..hide(z118=(260.69,297.219))z118
+ ..controls hide(z119=(265.886,298.191))z119 and hide(z120=(265.944,297.765))z120..hide(z121=(265.075,264.932))z121
+ ..controls hide(z122=(264.736,252.135))z122 and hide(z123=(264.811,245.7))z123..hide(z124=(265.297,245.7))z124
+ ..controls hide(z125=(266.883,245.7))z125 and hide(z126=(267.399,252.793))z126..hide(z127=(267.917,281.75))z127
+ ..controls hide(z128=(268.149,294.694))z128 and hide(z129=(268.149,294.694))z129..hide(z130=(265.364,299.227))z130
+ ..controls hide(z131=(262.174,304.419))z131 and hide(z132=(261.87,306.04))z132..hide(z133=(263.981,306.6))z133
+ ..controls hide(z134=(268.294,307.744))z134 and hide(z135=(275.854,303.103))z135..hide(z136=(280.281,296.595))z136
+ ..controls hide(z137=(283.962,291.184))z137 and hide(z138=(284.721,290.268))z138..hide(z139=(289.063,286.003))z139
+ ..controls hide(z140=(291.403,283.705))z140 and hide(z141=(292.5,282.033))z141..hide(z142=(292.5,280.763))z142
+ ..controls hide(z143=(292.5,279.62))z143 and hide(z144=(293.377,278.063))z144..hide(z145=(294.767,276.741))z145
+ ..controls hide(z146=(296.017,275.551))z146 and hide(z147=(298.525,272.208))z147..hide(z148=(300.361,269.283))z148
+ ..controls hide(z149=(302.197,266.358))z149 and hide(z150=(303.934,263.981))z150..hide(z151=(304.236,263.981))z151
+ ..controls hide(z152=(304.545,263.981))z152 and hide(z153=(305.201,262.957))z153..hide(z154=(305.736,261.641))z154
+ ..controls hide(z155=(306.263,260.343))z155 and hide(z156=(308.249,257.363))z156..hide(z157=(310.196,254.95))z157
+ ..controls hide(z158=(312.143,252.537))z158 and hide(z159=(313.706,250.225))z159..hide(z160=(313.706,249.758))z160
+ ..controls hide(z161=(313.706,249.294))z161 and hide(z162=(314.657,248))z162..hide(z163=(315.827,246.87))z163
+ ..controls hide(z164=(316.997,245.74))z164 and hide(z165=(318.128,243.888))z165..hide(z166=(318.35,242.738))z166
+ ..controls hide(z167=(318.613,241.372))z167 and hide(z168=(319.52,240.264))z168..hide(z169=(320.982,239.521))z169
+ ..controls hide(z170=(322.225,238.889))z170 and hide(z171=(323.698,237.449))z171..hide(z172=(324.309,236.267))z172
+ ..controls hide(z173=(324.914,235.097))z173 and hide(z174=(325.652,234.031))z174..hide(z175=(325.955,233.89))z175
+ ..controls hide(z176=(326.254,233.75))z176 and hide(z177=(327.334,231.989))z177..hide(z178=(328.331,230.015))z178
+ ..controls hide(z179=(329.365,227.967))z179 and hide(z180=(331.096,225.887))z180..hide(z181=(332.316,225.225))z181
+ ..controls hide(z182=(333.504,224.581))z182 and hide(z183=(335.098,222.921))z183..hide(z184=(335.863,221.532))z184
+ ..controls hide(z185=(336.635,220.13))z185 and hide(z186=(338.471,217.547))z186..hide(z187=(339.995,215.719))z187
+ ..controls hide(z188=(341.518,213.89))z188 and hide(z189=(343.403,211.128))z189..hide(z190=(344.236,209.503))z190
+ ..controls hide(z191=(345.069,207.878))z191 and hide(z192=(347.734,204.531))z192..hide(z193=(350.232,201.971))z193
+ ..controls hide(z194=(352.945,199.192))z194 and hide(z195=(354.903,196.494))z195..hide(z196=(355.168,195.17))z196
+ ..controls hide(z197=(355.411,193.957))z197 and hide(z198=(356.943,191.441))z198..hide(z199=(358.596,189.54))z199
+ ..controls hide(z200=(361.841,185.811))z200 and hide(z201=(364.128,182.683))z201..hide(z202=(365.551,180.034))z202
+ ..controls hide(z203=(366.846,177.621))z203 and hide(z204=(365.23,174.037))z204..hide(z205=(362.846,174.037))z205
+ ..controls hide(z206=(361.091,174.037))z206 and hide(z207=(358.527,172.096))z207..hide(z208=(359.273,171.332))z208
+ ..controls hide(z209=(359.507,171.093))z209 and hide(z210=(360.799,171.399))z210..hide(z211=(362.115,172.005))z211
+ ..controls hide(z212=(368.257,174.837))z212 and hide(z213=(375.377,173.789))z213..hide(z214=(371.109,170.681))z214
+ ..controls hide(z215=(370.133,169.97))z215 and hide(z216=(369.915,169.138))z216..hide(z217=(370.268,167.456))z217
+ ..controls hide(z218=(370.58,165.969))z218 and hide(z219=(370.316,164.385))z219..hide(z220=(369.501,162.849))z220
+ ..controls hide(z221=(368.801,161.533))z221 and hide(z222=(368.321,159.646))z222..hide(z223=(368.404,158.535))z223
+ ..controls hide(z224=(368.485,157.438))z224 and hide(z225=(368.095,156.301))z225..hide(z226=(367.526,155.976))z226
+ ..controls hide(z227=(366.853,155.591))z227 and hide(z228=(366.377,153.635))z228..hide(z229=(366.137,150.272))z229
+ ..controls hide(z230=(365.933,147.42))z230 and hide(z231=(365.431,143.858))z231..hide(z232=(365.003,142.228))z232
+ ..controls hide(z233=(364.584,140.633))z233 and hide(z234=(363.853,137.475))z234..hide(z235=(363.395,135.281))z235
+ ..controls hide(z236=(362.936,133.087))z236 and hide(z237=(362.088,130.162))z237..hide(z238=(361.53,128.846))z238
+ ..controls hide(z239=(360.967,127.519))z239 and hide(z240=(360.506,125.117))z240..hide(z241=(360.506,123.508))z241
+ ..controls hide(z242=(360.506,121.899))z242 and hide(z243=(360.111,119.859))z243..hide(z244=(359.629,118.974))z244
+ ..controls hide(z245=(359.15,118.097))z245 and hide(z246=(358.834,116.269))z246..hide(z247=(358.934,114.952))z247
+ ..controls hide(z248=(359.034,113.636))z248 and hide(z249=(358.602,111.825))z249..hide(z250=(357.983,110.967))z250
+ ..controls hide(z251=(357.35,110.088))z251 and hide(z252=(356.85,108.298))z252..hide(z253=(356.85,106.909))z253
+ ..controls hide(z254=(356.85,105.519))z254 and hide(z255=(356.382,103.567))z255..hide(z256=(355.79,102.485))z256
+ ..controls hide(z257=(355.209,101.424))z257 and hide(z258=(354.401,97.4023))z258..hide(z259=(354.005,93.5999))z259
+ ..controls hide(z260=(352.968,83.6548))z260 and hide(z261=(352.529,81.2454))z261..hide(z262=(351.429,79.4868))z262
+ ..controls hide(z263=(350.069,77.3098))z263 and hide(z264=(348.615,69.103))z264..hide(z265=(349.163,66.6899))z265
+ ..controls hide(z266=(349.581,64.8442))z266 and hide(z267=(349.391,64.6501))z267..hide(z268=(346.247,63.7119))z268
+ ..controls hide(z269=(341.811,62.3882))z269 and hide(z270=(340.625,63.3262))z270..hide(z271=(340.914,67.9331))z271
+ ..controls hide(z272=(341.263,73.5166))z272 and hide(z273=(339.121,72.5398))z273..hide(z274=(338.347,66.7629))z274
+ ..controls hide(z275=(337.642,61.498))z275 and hide(z276=(335.318,60.0554))z276..hide(z277=(334.459,64.3499))z277
+ ..controls hide(z278=(334.225,65.5198))z278 and hide(z279=(333.412,67.0278))z279..hide(z280=(332.646,67.7136))z280
+ ..controls hide(z281=(331.914,68.3679))z281 and hide(z282=(331.256,69.5457))z282..hide(z283=(331.256,70.2))z283
+ ..controls hide(z284=(331.256,70.8691))z284 and hide(z285=(330.353,72.7593))z285..hide(z286=(329.3,74.2949))z286
+ ..controls hide(z287=(325.789,79.4136))z287 and hide(z288=(320.082,90.9722))z288..hide(z289=(318.72,95.7205))z289
+ ..controls hide(z290=(317.42,100.254))z290 and hide(z291=(314.317,105.3))z291..hide(z292=(312.829,105.3))z292
+ ..controls hide(z293=(308.461,105.3))z293 and hide(z294=(294.694,129.504))z294..hide(z295=(294.694,137.182))z295
+ ..controls hide(z296=(294.694,141.643))z296 and hide(z297=(291.904,145.559))z297..hide(z298=(290.891,142.521))z298
+ ..controls hide(z299=(290.542,141.474))z299 and hide(z300=(287.381,143.252))z300..hide(z301=(287.381,144.495))z301
+ ..controls hide(z302=(287.381,144.918))z302 and hide(z303=(286.723,145.888))z303..hide(z304=(285.992,146.542))z304
+ ..controls hide(z305=(285.21,147.242))z305 and hide(z306=(284.219,148.809))z306..hide(z307=(283.725,150.125))z307
+ ..controls hide(z308=(283.246,151.402))z308 and hide(z309=(282.133,154.294))z309..hide(z310=(281.275,156.487))z310
+ ..controls hide(z311=(280.406,158.711))z311 and hide(z312=(278.15,162.52))z312..hide(z313=(276.229,165.006))z313
+ ..controls hide(z314=(274.309,167.493))z314 and hide(z315=(272.756,170.223))z315..hide(z316=(272.756,171.112))z316
+ ..controls hide(z317=(272.756,172))z317 and hide(z318=(271.953,173.672))z318..hide(z319=(270.965,174.842))z319
+ ..controls hide(z320=(269.404,176.689))z320 and hide(z321=(269.276,177.255))z321..hide(z322=(269.969,179.229))z322
+ ..controls hide(z323=(270.893,181.862))z323 and hide(z324=(269.866,185.685))z324..hide(z325=(267.573,188.15))z325
+ ..controls hide(z326=(266.139,189.692))z326 and hide(z327=(265.841,220.618))z327..hide(z328=(267.229,223.909))z328
+ ..controls hide(z329=(267.537,224.64))z329 and hide(z330=(267.426,225.664))z330..hide(z331=(266.979,226.212))z331
+ ..controls hide(z332=(266.536,226.755))z332 and hide(z333=(265.939,230.782))z333..hide(z334=(265.65,235.17))z334
+ ..controls hide(z335=(264.577,251.473))z335 and hide(z336=(263.579,226.029))z336..hide(z337=(264.07,194.878))z337
+ ..controls hide(z338=(264.101,192.884))z338 and hide(z339=(263.729,188.479))z339..hide(z340=(263.25,185.189))z340
+ ..controls hide(z341=(262.42,179.485))z341 and hide(z342=(262.452,179.086))z342..hide(z343=(263.835,177.876))z343
+ ..controls hide(z344=(264.65,177.164))z344 and hide(z345=(266.512,174.33))z345..hide(z346=(268.04,171.478))z346
+ ..controls hide(z347=(269.567,168.626))z347 and hide(z348=(271.381,165.501))z348..hide(z349=(272.135,164.421))z349
+ ..controls hide(z350=(272.9,163.324))z350 and hide(z351=(273.487,162.293))z351..hide(z352=(273.487,162.045))z352
+ ..controls hide(z353=(273.487,161.804))z353 and hide(z354=(275.511,158.242))z354..hide(z355=(277.976,154.147))z355
+ ..controls hide(z356=(282.728,146.25))z356 and hide(z357=(284.237,143.655))z357..hide(z358=(287.245,138.206))z358
+ ..controls hide(z359=(289.99,133.234))z359 and hide(z360=(299.06,117.685))z360..hide(z361=(301.023,114.587))z361
+ ..controls hide(z362=(301.95,113.124))z362 and hide(z363=(302.737,111.747))z363..hide(z364=(302.737,111.589))z364
+ ..controls hide(z365=(302.737,111.183))z365 and hide(z366=(314.213,91.2598))z366..hide(z367=(321.733,78.6091))z367
+ ..controls hide(z368=(325.081,72.9785))z368 and hide(z369=(329.837,64.9495))z369..hide(z370=(332.304,60.7668))z370
+ ..controls hide(z371=(338.083,50.968))z371 and hide(z372=(337.658,51.1626))z372..hide(z373=(346.101,54.4392))z373
+ ..controls hide(z374=(354.37,57.6489))z374 and hide(z375=(353.838,56.9644))z375..hide(z376=(355.457,66.4705))z376
+ ..controls hide(z377=(356.179,70.7117))z377 and hide(z378=(357.29,77.0364))z378..hide(z379=(357.91,80.4373))z379
+ ..controls hide(z380=(358.537,83.8743))z380 and hide(z381=(359.518,89.2683))z381..hide(z382=(360.104,92.5029))z382
+ ..controls hide(z383=(360.686,95.7136))z383 and hide(z384=(362.512,105.446))z384..hide(z385=(364.153,114.075))z385
+ ..controls hide(z386=(367.6,132.21))z386 and hide(z387=(370.829,149.516))z387..hide(z388=(373.021,161.606))z388
+ ..controls hide(z389=(373.857,166.213))z389 and hide(z390=(374.711,170.875))z390..hide(z391=(374.912,171.917))z391
+ ..controls hide(z392=(375.191,173.367))z392 and hide(z393=(374.51,174.842))z393..hide(z394=(372.046,178.132))z394
+ ..controls hide(z395=(364.981,187.565))z395 and hide(z396=(360.559,193.664))z396..hide(z397=(357.253,198.534))z397
+ ..controls hide(z398=(355.351,201.336))z398 and hide(z399=(351.495,206.797))z399..hide(z400=(348.733,210.6))z400
+ ..controls hide(z401=(345.967,214.408))z401 and hide(z402=(340.482,222.007))z402..hide(z403=(336.594,227.419))z403
+ ..controls hide(z404=(332.706,232.83))z404 and hide(z405=(327.32,240.264))z405..hide(z406=(324.675,243.872))z406
+ ..controls hide(z407=(321.994,247.528))z407 and hide(z408=(318.404,252.436))z408..hide(z409=(316.598,254.914))z409
+ ..controls hide(z410=(307.005,268.076))z410 and hide(z411=(302.032,274.894))z411..hide(z412=(295.05,284.456))z412
+ ..controls hide(z413=(290.779,290.306))z413 and hide(z414=(285.377,297.845))z414..hide(z415=(283.001,301.275))z415
+ ..controls hide(z416=(275.704,311.805))z416 and hide(z417=(275.811,311.75))z417..cycle;
+ PreeditedPath2 = hide(z418=(254.987,177.913))z418..controls hide(z419=(254.744,177.67))z419 and hide(z420=(253.305,177.229))z420..hide(z421=(251.769,176.926))z421
+ ..controls hide(z422=(250.239,176.624))z422 and hide(z423=(246.065,175.346))z423..hide(z424=(242.482,174.084))z424
+ ..controls hide(z425=(235.17,171.507))z425 and hide(z426=(231.263,171.562))z426..hide(z427=(228.296,174.285))z427
+ ..controls hide(z428=(226.59,175.85))z428 and hide(z429=(225.265,175.207))z429..hide(z430=(225.222,172.794))z430
+ ..controls hide(z431=(225.181,170.533))z431 and hide(z432=(221.496,168.977))z432..hide(z433=(216.377,169.058))z433
+ ..controls hide(z434=(212.647,169.117))z434 and hide(z435=(210.978,168.823))z435..hide(z436=(209.978,167.931))z436
+ ..controls hide(z437=(209.247,167.279))z437 and hide(z438=(208.138,166.725))z438..hide(z439=(207.565,166.725))z439
+ ..controls hide(z440=(206.982,166.725))z440 and hide(z441=(205.847,166.11))z441..hide(z442=(205.042,165.359))z442
+ ..controls hide(z443=(202.136,162.644))z443 and hide(z444=(198.973,161.521))z444..hide(z445=(194.147,161.49))z445
+ ..controls hide(z446=(190.929,161.469))z446 and hide(z447=(188.598,161.014))z447..hide(z448=(186.688,160.034))z448
+ ..controls hide(z449=(185.149,159.244))z449 and hide(z450=(181.789,157.939))z450..hide(z451=(179.156,157.109))z451
+ ..controls hide(z452=(176.524,156.279))z452 and hide(z453=(173.783,155.284))z453..hide(z454=(173.014,154.879))z454
+ ..controls hide(z455=(172.251,154.477))z455 and hide(z456=(169.942,153.653))z456..hide(z457=(167.895,153.051))z457
+ ..controls hide(z458=(165.847,152.448))z458 and hide(z459=(163.522,151.492))z459..hide(z460=(162.74,150.93))z460
+ ..controls hide(z461=(161.973,150.38))z461 and hide(z462=(160.18,149.906))z462..hide(z463=(158.864,149.906))z463
+ ..controls hide(z464=(157.548,149.906))z464 and hide(z465=(155.467,149.416))z465..hide(z466=(154.367,148.846))z466
+ ..controls hide(z467=(153.27,148.278))z467 and hide(z468=(152.149,147.955))z468..hide(z469=(151.954,148.151))z469
+ ..controls hide(z470=(151.753,148.351))z470 and hide(z471=(150.016,147.838))z471..hide(z472=(148.115,147.018))z472
+ ..controls hide(z473=(146.213,146.197))z473 and hide(z474=(143.748,145.515))z474..hide(z475=(142.667,145.51))z475
+ ..controls hide(z476=(128.554,145.452))z476 and hide(z477=(126.589,144.869))z477..hide(z478=(124.219,140.034))z478
+ ..controls hide(z479=(123.528,138.624))z479 and hide(z480=(122.192,137.646))z480..hide(z481=(119.925,136.89))z481
+ ..controls hide(z482=(118.097,136.281))z482 and hide(z483=(115.887,135.452))z483..hide(z484=(114.952,135.025))z484
+ ..controls hide(z485=(114.015,134.597))z485 and hide(z486=(112.283,134.322))z486..hide(z487=(111.04,134.404))z487
+ ..controls hide(z488=(109.836,134.483))z488 and hide(z489=(107.75,133.91))z489..hide(z490=(106.506,133.16))z490
+ ..controls hide(z491=(105.256,132.406))z491 and hide(z492=(103.033,131.403))z492..hide(z493=(101.644,130.967))z493
+ ..controls hide(z494=(100.254,130.53))z494 and hide(z495=(98.2485,129.46))z495..hide(z496=(97.2561,128.627))z496
+ ..controls hide(z497=(95.428,127.091))z497 and hide(z498=(95.428,127.091))z498..hide(z499=(98.426,127.436))z499
+ ..controls hide(z500=(101.129,127.747))z500 and hide(z501=(115.684,132.079))z501..hide(z502=(128.334,136.337))z502
+ ..controls hide(z503=(131.163,137.289))z503 and hide(z504=(139.669,139.925))z504..hide(z505=(147.347,142.228))z505
+ ..controls hide(z506=(155.025,144.531))z506 and hide(z507=(164.185,147.312))z507..hide(z508=(167.822,148.444))z508
+ ..controls hide(z509=(171.478,149.581))z509 and hide(z510=(176.841,151.206))z510..hide(z511=(179.887,152.1))z511
+ ..controls hide(z512=(182.911,152.987))z512 and hide(z513=(191.441,155.611))z513..hide(z514=(198.9,157.95))z514
+ ..controls hide(z515=(206.359,160.288))z515 and hide(z516=(215.873,163.225))z516..hide(z517=(220.106,164.495))z517
+ ..controls hide(z518=(224.347,165.767))z518 and hide(z519=(230.894,167.764))z519..hide(z520=(234.731,168.955))z520
+ ..controls hide(z521=(238.534,170.136))z521 and hide(z522=(244.657,171.975))z522..hide(z523=(248.259,173.019))z523
+ ..controls hide(z524=(255.864,175.222))z524 and hide(z525=(259.346,176.934))z525..hide(z526=(257.985,177.8))z526
+ ..controls hide(z527=(256.888,178.498))z527 and hide(z528=(255.62,178.546))z528..cycle;
+ dotlabels.rt(371,375,416,44,26);
+ draw PreeditedPath1 withcolor green;
+ draw PreeditedPath2 withcolor red;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FEATPOST specific %%
+ PhotoMarks := 5;
+ PhotoPair1 := z26; PhotoPoint1 := (7.0,-0.6,5.6);
+ PhotoPair2 := z44; PhotoPoint2 := (7.0,0,0);
+ PhotoPair3 := z371; PhotoPoint3:= (0,6.4,0);
+ PhotoPair4 := z375; PhotoPoint4:= (-0.6,6.4,0);
+ PhotoPair5 := z416; PhotoPoint5:= (-0.6,-0.6,5.6);
+ color pp[];
+ pp1 = (7.0,-0.6,7.0);
+ pp5 = (-0.6,-0.6,7.0);
+ pp2 = (8.4,0,0);
+ pp3 = (8.4,6.4,0);
+ path pt[];
+ f := (15,20,15); %%%%%%%%%%%%%%%%%%%%%%%
+ viewcentr := black; %%
+ Spread := 30; %% Parameters
+ ShiftV := (250,100); %%
+% SphericalDistortion := true; %%%%%%%%%%%%%%%%%%%%%%%
+
+ pt1 = rp(PhotoPoint1)--rp(pp1)--rp(pp5)--rp(PhotoPoint5);
+ pt2 = rp(PhotoPoint2)--rp(pp2)--rp(pp3)--rp(PhotoPoint3);
+ draw pt1 withpen pencircle scaled 3pt withcolor blue;
+ draw pt2 withpen pencircle scaled 3pt withcolor blue;
+
+ photoreverse(400,5.5,2.5); %% Changes parameters
+
+ pt3 = rp(PhotoPoint1)--rp(pp1)--rp(pp5)--rp(PhotoPoint5);
+ pt4 = rp(PhotoPoint2)--rp(pp2)--rp(pp3)--rp(PhotoPoint3);
+ draw pt3 withpen pencircle scaled 1pt;
+ draw pt4 withpen pencircle scaled 1pt;
+endfig;
+end
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/polyhedr.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/polyhedr.mp
new file mode 100644
index 00000000000..b0509b75f05
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/polyhedr.mp
@@ -0,0 +1,191 @@
+% polyhedr.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{newcent}
+\pagestyle{empty}
+\begin{document}
+etex
+
+% This exemplifies hidden line removal.
+
+f := (2,5,3);
+
+beginfig(1);
+ Print_Step := 1;
+ faceraytrace( 0.4, red );
+ lineraytrace( 0.4, black );
+% pickup pencircle scaled 2pt;
+% draw_all_test( false );
+% pickup pencircle scaled 1pt;
+% sharpraytrace;
+endfig;
+
+f := 2*(2,5,3.5);
+Print_step := 10;
+Spread := 156;
+LightSource := 2.5*(4,-3,17);
+
+beginfig(2);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Definition of the 3D-figure
+ V1 := (1.4,0,0);
+ V2 := (1,1,0);
+ V3 := (0,1.4,0);
+ V4 := (-1,1,0);
+ V5 := (-1.4,0,0);
+ V6 := (-1,-1,0);
+ V7 := (0, -1.4,0);
+ V8 := (1,-1,0);
+ V9 := (1.4,0,1);
+ V10:= (1,1,1);
+ V11:= (0,1.4,1);
+ V12:= (-1,1,1);
+ V13:= (-1.4,0,1);
+ V14:= (-1,-1,1);
+ V15:= (0,-1.4,1);
+ V16:= (1,-1,1);
+
+ V17:= (1.4,0,-1);
+ V18:= (1,1,-1);
+ V19:= (0,1.4,-1);
+ V20:= (-1,1,-1);
+ V21:= (-1.4,0,-1);
+ V22:= (-1,-1,-1);
+ V23:= (0,-1.4,-1);
+ V24:= (1,-1,-1);
+
+ V25:= (0.7,0,0);
+ V26:= (0,0.7,0);
+ V27:= (0.7,-0.7,0.7);
+ V28:= (0.7,0,0.7);
+ V29:= (0,0.7,0.7);
+ V30:= (-0.7,0.7,0.7);
+ V31:= (0.35,0.35,1.05);
+ V32:= (0,-0.7,1.4);
+ V34:= (0,0,1.4);
+ V33:= (-0.7,0,1.4);
+ NL := 1;
+ npl1 := 9;
+ L1p1 := V17;
+ L1p2 := V18;
+ L1p3 := V19;
+ L1p4 := V20;
+ L1p5 := V21;
+ L1p6 := V22;
+ L1p7 := V23;
+ L1p8 := V24;
+ L1p9 := V17;
+ NF := 8;
+ npf1 := 4;
+ F1p1 := V1;
+ F1p2 := V2;
+ F1p3 := V10;
+ F1p4 := V9;
+ npf2 := 4;
+ F2p1 := V2;
+ F2p2 := V3;
+ F2p3 := V11;
+ F2p4 := V10;
+ npf3 := 4;
+ F3p1 := V3;
+ F3p2 := V4;
+ F3p3 := V12;
+ F3p4 := V11;
+ npf4 := 4;
+ F4p1 := V4;
+ F4p2 := V5;
+ F4p3 := V13;
+ F4p4 := V12;
+ npf5 := 4;
+ F5p1 := V5;
+ F5p2 := V6;
+ F5p3 := V14;
+ F5p4 := V13;
+ npf6 := 4;
+ F6p1 := V6;
+ F6p2 := V7;
+ F6p3 := V15;
+ F6p4 := V14;
+ npf7 := 4;
+ F7p1 := V7;
+ F7p2 := V8;
+ F7p3 := V16;
+ F7p4 := V15;
+ npf8 := 4;
+ F8p1 := V8;
+ F8p2 := V1;
+ F8p3 := V9;
+ F8p4 := V16;
+ makeface9(25,26,29,31,28);
+ makeface10(25,27,28);
+ makeface11(26,29,30);
+ makeface12(27,28,31,34,32);
+ makeface13(31,29,30,33,34);
+ makeface14(32,33,34);
+ makeface15(25,26,30,33,32,27);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% draw_all_test(true);
+ ShadowOn := true;
+ fill_faces();
+ draw_invisible( true, true, TableC3, TableC0 );
+% lineraytrace(0.3, black);
+% faceraytrace(0.4, green); % This my take very long.
+% sharpraytrace;
+
+endfig;
+
+f := 2*(-2,-0.5,2.5);
+Spread := 56;
+LightSource := 1.5*(-4,5,2.7);
+
+beginfig(3);
+ numeric i, aux;
+ pair anglepar;
+ V1 := ( 0.7, 0, 0 );
+ V2 := ( 0, 0.7, 0 );
+ V3 := ( 0.7,-0.7, 0.7 );
+ V4 := ( 0.7, 0, 0.7 );
+ V5 := ( 0, 0.7, 0.7 );
+ V6 := (-0.7, 0.7, 0.7 );
+ V7 := ( 0.35,0.35,1.05);
+ V8 := ( 0, -0.7, 1.4 );
+ V9 := ( 0, 0, 1.4 );
+ V10:= (-0.7, 0, 1.4 );
+ anglepar = getanglepair( (1,1,1) );
+ for i=11 upto 20:
+ V[i]:=eulerrotation( -45, 0, 0, V[i-10] );
+ V[i]:=eulerrotation( 0, 90-ypart anglepar, 0, V[i] );
+ endfor;
+ aux = Z( V11 );
+ for i=25 upto 34:
+ V[i]:=( X(V[i-14]),Y(V[i-14]),1.35*(Z(V[i-14])-aux));
+ endfor;
+ makeface1(25,26,29,31,28);
+ makeface2(25,27,28);
+ makeface3(26,29,30);
+ makeface4(32,33,34);
+ makeface5(25,26,30,34,32,27);
+ makeface6(27,28,31,33,32);
+ makeface7(31,29,30,34,33);
+ for i=1 upto 7:
+ FC[i] := 4;
+ FCD[i]:= true;
+ endfor;
+ ShadowOn := true;
+ setthearena( 10, 5 );
+ fill_faces();
+ draw_invisible( false, false, TableC4, TableC0 );
+% for i=25 upto 34:
+% label.top( decimal(i), rp(V[i]) );
+% endfor;
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/positivecharge.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/positivecharge.mp
new file mode 100644
index 00000000000..b0fccbc11a3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/positivecharge.mp
@@ -0,0 +1,28 @@
+% positivecharge.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric size, num, i, j, coos[];
+ string comm, bray;
+ color fro, tip;;
+ size = 1.5;
+ num = 70;
+ bray = "0.05";
+ draw rp(black)--rp((size,0,0))--rp((size,size,0))--rp((0,size,0))--cycle;
+ for i=1 upto num:
+ for j=1 upto 6:
+ coos[j] := uniformdeviate(size);
+ endfor;
+ fro := (coos1,coos2,coos3);
+ tip := (coos4,coos5,coos6);
+ comm := "positivecharge(true," & cstr(fro) & "," & bray & ");";
+ getready( comm, fro );
+ comm := "positivecharge(false," & cstr(tip) & "," & bray & ");";
+ getready( comm, tip );
+ endfor;
+ doitnow;
+endfig;
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/resistcircuit.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/resistcircuit.mp
new file mode 100644
index 00000000000..e0e679c97e1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/resistcircuit.mp
@@ -0,0 +1,64 @@
+% resistcircuit.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ boolean kind[];
+ numeric largmolas, lengmolas, numolas, numturns, u, i, fraction, stepx;
+ numeric totalx, totaly, actuax, actuay, numparal, numserie, stepy;
+ path refpath;
+ pair refpoint, startpoint, ini, fin;
+ pickup pencircle scaled 2pt;
+ fraction = 0.6;
+ numolas = 9;
+ u = 2mm;
+ largmolas = 2u;
+ lengmolas = 12u;
+ numturns = 10;
+ actuax = 1;
+ actuay = 1;
+ numparal = 0;
+ numserie = 1;
+ stepy = largmolas/fraction;
+ stepx = 0.5*(1-fraction)*lengmolas;
+ draw (left*stepx)--origin;
+ for i=2 upto numolas:
+ if uniformdeviate(2) > 1:
+ kind[i] = false;
+ numserie := incr( numserie );
+ else:
+ kind[i] = true;
+ numparal := incr( numparal );
+ fi;
+ endfor;
+ totalx = numserie*lengmolas;
+ totaly = numparal*stepy;
+ draw (right*totalx)--(right*(totalx+stepx));
+ startpoint = (up*0.5*totaly);
+ refpoint = startpoint;
+ draw (down*0.5*totaly)--refpoint;
+ refpath = springpath(origin,right*lengmolas,numturns,largmolas,fraction);
+ draw refpath shifted refpoint;
+ refpoint := refpoint + right*lengmolas;
+ for i=2 upto numolas:
+ if kind[i]:
+ ini := startpoint+down*stepy*actuay;
+ fin := ini + 0.5*(actuax-1)*lengmolas*right;
+ draw ini--fin;
+ draw refpath shifted fin;
+ ini := fin + lengmolas*right;
+ fin := ini + 0.5*(actuax-1)*lengmolas*right;
+ draw ini--fin--refpoint;
+ refpoint := refpoint + down*stepy*0.5;
+ actuay := incr( actuay );
+ else:
+ draw refpath shifted refpoint;
+ refpoint := refpoint + right*lengmolas;
+ actuax := incr( actuax );
+ fi;
+ endfor;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscircle.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscircle.mp
new file mode 100644
index 00000000000..a63ecb92e95
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscircle.mp
@@ -0,0 +1,49 @@
+% rigorouscircle.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := (2,0.2,0.1);
+
+
+beginfig(1);
+ numeric ind, cray, sray, cnum, ang, aux, auxs;
+ color sidevec, rayvec, angulmomv, vecaux;
+ path paux;
+ pen pendot;
+ pendot = pencircle scaled 2pt;
+ sray = 1;
+ cnum = 8;
+ ang = 45;
+ auxs = 0.15;
+ ray = 3*cosd(ang)*sray/cnum;
+ sidevec = ( sray*sind(ang), 0, 0 );
+ for ind=1 upto cnum:
+ aux := ind*360/cnum;
+% draw rigorouscircle( black, (0,sind(aux),cosd(aux)), sray ) dashed evenly;
+ rayvec := sray*cosd(ang)*(0,cosd(aux),sind(aux));
+
+ vecaux := rayvec+sidevec;
+ drawarrow rp(black)--rp(vecaux+auxs*N(vecaux));
+ paux := rigorouscircle( vecaux, vecaux, ray );
+ draw paux;
+ drawoptions( withpen pendot );
+ drawarrow (subpath (0,1) of paux);
+ draw rp(vecaux);
+ drawoptions();
+
+ vecaux := rayvec-sidevec;
+ drawarrow rp(black)--rp(vecaux+auxs*N(vecaux));
+ paux := rigorouscircle( vecaux, vecaux, ray );
+ draw paux;
+ drawoptions( withpen pendot );
+ drawarrow (subpath (0,1) of paux);
+ draw rp(vecaux);
+ drawoptions();
+ endfor;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscone.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscone.mp
new file mode 100644
index 00000000000..3c79b95315b
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorouscone.mp
@@ -0,0 +1,36 @@
+% rigorouscone.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ color nalfa, gammacnt, vertex;
+ path gamma, cone;
+ numeric altura, grids, radius, aux, i, numc, slope;
+
+ f := (5,4,2);
+ Spread := 60;
+ ShiftV := (200,200);
+ altura = 1;
+ radius = 0.3;
+ grids = 1;
+ numc = 9;
+ slope = 3;
+ nalfa = (0,0,1);
+
+ for i=1 upto numc:
+ aux := (i-0.5*(numc+1))*grids;
+ gammacnt := (0,aux,0);
+ vertex := (aux/slope,aux,altura);
+ gamma := rigorouscircle( gammacnt, nalfa, radius );
+ cone := rigorouscone(true, gammacnt, nalfa, radius, vertex );
+ unfill cone;
+ draw gamma dashed evenly;
+ draw cone;
+ endfor;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscSD.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscSD.mp
new file mode 100644
index 00000000000..e9bfa7c2730
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscSD.mp
@@ -0,0 +1,49 @@
+% rigorousdiscSD.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := 0.8*(6,3,4);
+
+SphericalDistortion := true;
+%%%%%Spread := 6;
+
+%SphericalDistortion := false;
+%%%%%%Spread := 20;
+
+beginfig(1);
+ color nalfa, gammacnt, vertex;
+ numeric altura, grids, radius, aux, auy, i, j, numc;
+
+ altura = 1;
+ radius = 0.5;
+ grids = 1.4;
+ numc = 7;
+
+ for i=1 upto numc:
+ aux := (i-0.5*(numc+1))*grids;
+ for j=1 upto numc:
+ auy := (j-0.5*(numc+1))*grids;
+ if normaldeviate > 0:
+ gammacnt := (aux,auy,0);
+ vertex := (aux,auy,altura);
+ else:
+ if normaldeviate > 0:
+ gammacnt := (aux-altura/2,auy,radius);
+ vertex := (aux+altura/2,auy,radius);
+ else:
+ gammacnt := (aux,auy-altura/2,radius);
+ vertex := (aux,auy+altura/2,radius);
+ fi;
+ fi;
+ nalfa := vertex - gammacnt;
+ rigorousdisc( 0, true, gammacnt, radius, nalfa );
+ endfor;
+ endfor;
+ produce_auto_scale;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscoptions.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscoptions.mp
new file mode 100644
index 00000000000..59200177b7d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousdiscoptions.mp
@@ -0,0 +1,31 @@
+% rigorousdiscoptions.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+f := 0.8*(6,3,4);
+
+beginfig(1);
+ color axe, cstep, colen;
+ numeric nstep, sfrac, ouray, inray;
+
+ nstep = 0.65;
+ sfrac = 0.1;
+ ouray = 0.7;
+ inray = 0.5;
+
+ axe = red;
+ cstep = ( nstep, 0, 0 );
+ colen = ( nstep*sfrac, 0, 0 );
+
+ pickup pencircle scaled 2pt;
+ rigorousdisc( 0, true, -cstep, ouray, colen );
+ rigorousdisc( 0, false, black, ouray, colen );
+ rigorousdisc( inray, true, cstep, ouray, colen );
+ rigorousdisc( inray, false, 2*cstep, ouray, colen );
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousfearpath.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousfearpath.mp
new file mode 100644
index 00000000000..c56ab28f61a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rigorousfearpath.mp
@@ -0,0 +1,66 @@
+% rigorousfearpath.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric sfr, radfac, ind;
+ color xv, yv, zv, Ve[];
+ path p[];
+ f := 2*(5,2,3);
+ Spread := 50;
+ csr := 0.47;
+ clr := 0.57;
+ xv := (csr,0,0);
+ yv := (0,csr,0);
+ zv := (0,0,csr);
+ Ve1 := (-1,-1,-1);
+ Ve2 := (-1,1,-1);
+ Ve3 := (1,-1,-1);
+ Ve4 := (1,1,-1);
+ Ve5 := (-1,-1,1);
+ Ve6 := (-1,1,1);
+ Ve7 := (1,-1,1);
+ Ve8 := (1,1,1);
+ Ve9 := (0,0,0);
+ for ind=1 upto 8:
+ p[ind] := rigorousfearpath( Ve[ind], csr );
+ endfor;
+ p9 := rigorousfearpath( Ve9, clr );
+ unfill p1;
+ draw p1;
+ draw rp(Ve1+yv)--rp(Ve2-yv);
+ draw rp(Ve1+xv)--rp(Ve3-xv);
+ unfill p2;
+ draw p2;
+ unfill p3;
+ draw p3;
+ draw rp(Ve4-yv)--rp(Ve3+yv);
+ draw rp(Ve4-xv)--rp(Ve2+xv);
+ unfill p4;
+ draw p4;
+ draw rp(Ve1+zv)--rp(Ve5-zv);
+ draw rp(Ve2+zv)--rp(Ve6-zv);
+ unfill p9;
+ draw p9;
+ draw rp(Ve3+zv)--rp(Ve7-zv);
+ draw rp(Ve4+zv)--rp(Ve8-zv);
+ unfill p5;
+ draw p5;
+ draw rp(Ve5+yv)--rp(Ve6-yv);
+ draw rp(Ve5+xv)--rp(Ve7-xv);
+ unfill p6;
+ draw p6;
+ unfill p7;
+ draw p7;
+ draw rp(Ve8-yv)--rp(Ve7+yv);
+ draw rp(Ve8-xv)--rp(Ve6+xv);
+ unfill p8;
+ draw p8;
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/rotatnlc.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/rotatnlc.mp
new file mode 100644
index 00000000000..3adafc002cc
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/rotatnlc.mp
@@ -0,0 +1,49 @@
+% rotatnlc.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+
+ f := 2*(2,1,0.55);
+
+ Spread := 450;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, thetamin;
+ numeric thetamax, thetastp, long, radius, polar;
+ sizevec := (7,42,1); % (number of circles,
+ % number of vectors in outer circle,
+ % number of levels )
+ gridvec := (0.08,0.23,0.3);
+ thetamin := 90;
+ thetamax := 150;
+ long := 0.08;
+ thetastp := (thetamax-thetamin)/(X(sizevec)-1);
+ starpos := ( -X(gridvec)*X(sizevec) ,
+ -X(gridvec)*X(sizevec) ,
+ 0 );
+ bordpos := starpos;
+ counter := 1;
+ for i=1 upto X(sizevec):
+ radius := (i-1)*X(gridvec);
+ polar := i*floor(Y(sizevec)/X(sizevec));
+ for j=1 upto polar:
+ for k=1 upto Z(sizevec):
+ phi := 360*(j-1)/polar;
+ theta := thetamin+(i-1)*thetastp;
+ currpos := radius*(cosd(phi-90),sind(phi-90),0)
+ +(k-1)*(0,0,Z(gridvec));
+ generatedirline( counter, phi, theta, long, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ NL := decr(counter);
+ director_invisible( true, Y(gridvec), false );
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/saturn.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/saturn.mp
new file mode 100644
index 00000000000..44be273cc73
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/saturn.mp
@@ -0,0 +1,111 @@
+% saturn.mp
+% L. Nobre G.
+% 2005
+
+verbatimtex
+\documentclass{article}
+\usepackage{newcent}
+\pagestyle{empty}
+\begin{document}
+etex
+
+f := 2.5*(5,0,-1);
+Spread := 100;
+
+beginfig(1);
+ path planet, twilight, darkness, ringins, ringout, shadein, shadout;
+ path fullplanet, fullring, backdark, sunplanet, backring;
+ path nearringout, nearringins, hdtv, darkplanet;
+ numeric planetray, ringinsray, ringoutray, cutmargin, athmosray;
+ color sunposition, axedirection, labelpos, darknesstart, darknessend;
+ numeric inclinangle, labelray, begintime, endtime, colorfactor;
+ color planetcolor, ringcolor, toptextcolor, deepskycolor, bottextcolor;
+ picture storepicture;
+ planetray = 1;
+ ringinsray = 1.6;
+ ringoutray = 2.3;
+ labelray = 2.1;
+ cutmargin = 0.01;
+ inclinangle = 15;
+ sunposition = (-7,15,4);
+ colorfactor = 1.3;
+ bboxmargin := 6mm;
+ planetcolor = colorfactor*(255,152,55)/255;
+ ringcolor = colorfactor*(221,57,199)/255;
+ toptextcolor = colorfactor*(187,164,109)/255;
+ deepskycolor = colorfactor*(11,18,84)/255;
+ bottextcolor = colorfactor*(15,103,23)/255;
+ viewcentr := (0,0.5[planetray,ringinsray],0);
+ labelpos = (0,labelray,0);
+ athmosray = planetray+cutmargin;
+ axedirection = (0,-sind(inclinangle),cosd(inclinangle));
+ planet = rigorousfearpath( black, planetray );
+ twilight = spatialhalfcircle( black, sunposition, athmosray, true );
+ darknesstart = athmosray*ncrossprod( sunposition, axedirection );
+ darknessend = darknesstart - labelray*N( sunposition );
+ darkness = pathofstraightline( darknesstart, darknessend );
+ darknesstart := -darknesstart;
+ darknessend := darknesstart - labelray*N( sunposition );
+ backdark = pathofstraightline( darknesstart, darknessend );
+ ringins = goodcirclepath( black, axedirection, ringinsray );
+ ringout = goodcirclepath( black, axedirection, ringoutray );
+ endtime = xpart ( planet intersectiontimes twilight );
+ begintime = xpart ( reverse planet intersectiontimes twilight );
+ sunplanet = subpath (-begintime-cutmargin,endtime+cutmargin) of planet;
+ darkplanet = planet cutbefore twilight cutafter twilight;
+ fullplanet = buildcycle( sunplanet, reverse twilight );
+ fill fullplanet withcolor planetcolor;
+ endtime := xpart ( ringins intersectiontimes darkness );
+ begintime := xpart ( reverse ringins intersectiontimes sunplanet );
+ nearringins = subpath (-begintime-cutmargin,endtime+cutmargin) of ringins;
+ endtime := xpart ( ringout intersectiontimes darkness );
+ begintime := xpart ( reverse ringout intersectiontimes sunplanet );
+ nearringout = subpath (-begintime-cutmargin,endtime+cutmargin) of ringout;
+ backring = buildcycle( backdark, ringout, reverse darkplanet, reverse ringins );
+ fullring = buildcycle( nearringout, reverse darkness, reverse nearringins, sunplanet );
+ fill backring withcolor ringcolor;
+ fill fullring withcolor ringcolor;
+ picture thestatement;
+ thestatement = thelabel(
+ btex
+ \begin{tabular}{c}
+ \textbf{\textsf{{\Large T}$\!$ecnumbria}} \\
+ \textsf{\scriptsize a sombra da tecnologia}
+ \end{tabular}
+ etex,
+ origin);
+ pickup pencircle scaled 1pt;
+ draw thestatement scaled 2 shifted rp(labelpos) withcolor toptextcolor;
+ storepicture = currentpicture;
+ z1 = lrcorner currentpicture;
+ z2 = urcorner currentpicture;
+ z3 = ulcorner currentpicture;
+ z4 = llcorner currentpicture;
+ z5 = z1+down*bboxmargin;
+ z6 = z1+right*bboxmargin;
+ z7 = z2+right*bboxmargin;
+ z8 = z2+up*bboxmargin;
+ z9 = z3+up*bboxmargin;
+ z10= z3+left*bboxmargin;
+ z11= z4+left*bboxmargin;
+ z12= z4+down*bboxmargin;
+ z13= 0.5[z5,z12]+down*3*bboxmargin;
+ hdtv = z5..z6---z7..z8---z9..z10---z11..z12---cycle;
+ fill hdtv withcolor deepskycolor;
+ draw storepicture;
+ label(btex \texttt{\LARGE http://tecnumbria.com} etex, z13 );
+endfig;
+
+beginfig(2);
+ prologues := 1;
+ pickup pencircle scaled 5pt;
+ draw fullplanet;
+ unfill fullring;
+ draw fullring;
+ draw backring;
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/sharpraytrace.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/sharpraytrace.mp
new file mode 100644
index 00000000000..120f272f5fe
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/sharpraytrace.mp
@@ -0,0 +1,102 @@
+% sharpraytrace.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+f := (5,1.5,4.5);
+Spread := 60;
+PrintStep := 5;
+
+numeric phi;
+phi = 0.5*(1+sqrt(5));
+
+V1 := ( 1, phi,0);
+V2 := (-1, phi,0);
+V3 := (-1,-phi,0);
+V4 := ( 1,-phi,0);
+V5 := (0, 1, phi);
+V6 := (0,-1, phi);
+V7 := (0,-1,-phi);
+V8 := (0, 1,-phi);
+V9 := ( phi,0, 1);
+V10:= ( phi,0,-1);
+V11:= (-phi,0,-1);
+V12:= (-phi,0, 1);
+makeface1(1,2,3,4);
+makeface2(5,6,7,8);
+makeface3(9,10,11,12);
+
+beginfig(1);
+ pickup pencircle scaled 2pt;
+% numeric asize;
+% asize = 0.5*(phi+1);
+% cartaxes(asize,asize,asize);
+ sharpraytrace;
+endfig;
+
+Spread := 120;
+f:=3*(1,0.5,0.75);
+PrintStep := 0.15;
+
+numeric a, b, c, d, e;
+a = 0.1;
+b = 0.3;
+c = 1.1;
+d = 2.9;
+e = 0.5;
+
+V1 := ( a , b , c);
+V2 := ( a-1, b , 0);
+V3 := ( a-1-e, b-d,0);
+V4 := (-b , a , c);
+V5 := (-b , a-1, 0);
+V6 := (-b+d,a-1-e, 0);
+V7 := (-a , -b , c);
+V8 := (-a+1,-b , 0);
+V9 := (-a+1+e,-b+d,0);
+V10:= ( b , -a , c);
+V11:= ( b ,-a+1, 0);
+V12:= (b-d,-a+1+e, 0);
+makeface1(1,2,3);
+makeface2(4,5,6);
+makeface3(7,8,9);
+makeface4(10,11,12);
+
+beginfig(2);
+ pickup pencircle scaled 2pt;
+ sharpraytrace;
+endfig;
+
+Spread := 120;
+f:=(3,5,-0.6);
+PrintStep := 5;
+
+numeric a, b, c, d;
+a = 0.2;
+b = 0.3;
+c = 1.3;
+d = 1.4;
+
+V1 := ( b, 2.5*a, b);
+V2 := ( b,-2.5*a, b);
+V3 := (-c,-2.5*a,-3*b);
+V4 := (-c, 2.5*a,-3*b);
+V5 := (-b, 4*a, b);
+V6 := (-b,-4*a, b);
+V7 := ( c,-4*a,-3*b);
+V8 := ( c, 4*a,-3*b);
+V9 := ( d, 2*a,-b);
+V10:= ( d,-2*a,-b);
+V11:= (-d,-2*a,-b);
+V12:= (-d, 2*a,-b);
+makeface1(1,2,3,4);
+makeface2(5,6,7,8);
+makeface3(9,10,11,12);
+
+beginfig(3);
+ pickup pencircle scaled 2pt;
+ sharpraytrace;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecar.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecar.mp
new file mode 100644
index 00000000000..48224c4fc11
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecar.mp
@@ -0,0 +1,25 @@
+% simplecar.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+%f := 0.25*(2,2.15,15.3);
+f := (2,0.15,1.1);
+Spread := 320;
+HoriZon := -0.2;
+
+beginfig(1);
+ color refpos, angcol, lencol, froncol, rearcol;
+ refpos = black;
+ angcol = black;
+ lencol = (0.6, 0.35, 0.28);
+ froncol = (0.026, 0.12, 0.06);
+ rearcol = froncol;
+ setthearena( 12, 1.3 );
+ simplecar( refpos, angcol, lencol, froncol, rearcol );
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecarparam.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecarparam.mp
new file mode 100644
index 00000000000..c98c6bcdd87
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/simplecarparam.mp
@@ -0,0 +1,56 @@
+% simplecarparam.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{palatino}
+\begin{document}
+etex
+
+%f := 0.25*(2,2.15,15.3);
+f := (3.5,8,1.1);
+Spread := 160;
+
+beginfig(1);
+ color refpos, angcol, lencol, froncol, rearcol;
+ color a, b, c, d;
+ numeric lx, ly, lz, fx, fy, fz, hei;
+ lx = 0.8;
+ ly = 0.35;
+ lz = 0.18;
+ fx = 0.1;
+ fy = 0.2;
+ fz = 0.132;
+ hei = 0.05;
+ refpos = black;
+ angcol = black;
+ lencol = (lx, ly, lz);
+ froncol = (fx, fy, fz);
+ rearcol = froncol;
+ a = (0.5*lx,0.5*ly,-0.5*lz);
+ b = (0.5*lx-fx,0.5*ly,-0.5*lz);
+ c = (0.5*lx-fx,0.5*ly+fy,-0.5*lz);
+ d = (0.5*lx-fx-fz,0.5*ly+fy,-0.5*lz);
+ simplecar( refpos, angcol, lencol, froncol, rearcol );
+ drawdblarrow rp(a)--rp(b);
+ drawdblarrow rp(b)--rp(c);
+ drawdblarrow rp(c)--rp(d);
+ drawoptions( withcolor 0.87red );
+ labelinspace( true, 0.3[a,b], -red, hei*blue, btex X etex );
+ labelinspace( true, 0.3[b,c], green, hei*blue, btex Y etex );
+ labelinspace( true, 0.3[c,d], -red, hei*blue, btex Z etex );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/spatialhalfsfear.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/spatialhalfsfear.mp
new file mode 100644
index 00000000000..d80e3e3f5a6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/spatialhalfsfear.mp
@@ -0,0 +1,15 @@
+% spatialhalfsfear.mp
+% L. Nobre G.
+% 2004
+
+f := (3,-0.2,3);
+beginfig(1);
+ spatialhalfsfear( black, blue, 1 );
+ drawoptions( withpen pencircle scaled 3pt withcolor (blue+green) );
+ spatialhalfsfear( black, blue+green, 0.8 );
+ drawoptions( withpen pencircle scaled 3pt withcolor red );
+ spatialhalfsfear( black, red, 0.6 );
+ drawoptions( withpen pencircle scaled 3pt withcolor green );
+ spatialhalfsfear( black, green, 0.7 );
+endfig;
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/spltwiben.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/spltwiben.mp
new file mode 100644
index 00000000000..5c85736f7bc
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/spltwiben.mp
@@ -0,0 +1,81 @@
+% spltwiben.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+def zsurface( expr xc, yc ) =
+ ((3*xc-5)*(3*xc+5)/(3*sqrt(3)*yc-5))
+enddef;
+
+f := (4,-5,3);
+Spread := 120;
+
+beginfig(1);
+ numeric i, j, nx, ny, lowx, higx, lowy, higy;
+ numeric posx, posy, posz, facz;
+ color gridx[], pos, reforig, endbeta, endpsip;
+ color endfiel, kdiv, krot, kben, akdiv, akrot, akben;
+ path facex;
+ facz = 7;
+ nx = 15;
+ ny = 50;
+ lowx = 0;
+ higx = 0.5*sqrt(3);
+ reforig = (0,-0.5,0);
+ endpsip = (0.3,-0.5,0);
+ endbeta = (0,-0.2,0);
+ endfiel = (0,-0.5,9/facz);
+ kdiv = (0,-0.5,8/facz);
+ krot = (0,-0.5,2/facz);
+ kben = (0,-0.5,5/facz);
+ akdiv = (higx,0.5,8/facz);
+ akrot = (higx,-0.5,2/facz);
+ akben = (0,0,5/facz);
+ draw rp((0,0,0))--rp((0,0,5/facz));
+ for i=1 upto nx:
+ posx := lowx + i*( higx - lowx )/nx;
+ lowy := -sqrt(3)*posx/3;
+ higy := -lowy;
+ for j=0 upto ny:
+ posy := lowy + j*( higy - lowy )/ny;
+ posz := zsurface( posx, posy )/facz;
+ gridx[j] := ( posx, posy, posz );
+ % show gridx[j];
+ endfor;
+ pos := ( posx, lowy, 0 );
+ facex := rp( pos )--rp( gridx0 );
+ for j=1 upto ny:
+ facex := facex--rp( gridx[j] );
+ endfor;
+ facex:=facex--rp((posx,higy,0))--cycle;
+ unfill facex;
+ draw facex;
+ endfor;
+ drawarrow rp(reforig)--rp(endpsip);
+ drawarrow rp(reforig)--rp(endbeta);
+ drawarrow rp(reforig)--rp(endfiel);
+ label.ulft(btex $\mathcal{X}$ etex, rp(endbeta) );
+ label.llft(btex $\mathcal{Z}$ etex, rp(endpsip) );
+ label.llft(btex $\mathcal{H}$ etex, rp(endfiel) );
+ dotlabel("",rp(reforig+(0,0,Z(gridx[ny]))));
+ dotlabel("",rp(reforig+(0,0,Z(gridx0))));
+ dotlabel("",rp(kben));
+ dotlabel.rt(btex $\mathcal{K}_1$ etex,rp(gridx[ny]));
+ dotlabel.lrt(btex $\mathcal{K}_2$ etex,rp(gridx0));
+ dotlabel.lft(btex $\mathcal{K}_3$ etex,rp(akben));
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/stageforthree.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/stageforthree.mp
new file mode 100644
index 00000000000..f0d81f26e60
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/stageforthree.mp
@@ -0,0 +1,115 @@
+% stageforthree.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 35;
+f := (13,7,3.5);
+
+beginfig(1);
+ numeric i, len, wang, reflen, frac, coordg;
+ numeric fws, NumLines, inray, outay;
+ path conepath, cira, cirb, ella, ellb, tuba, tubb, tubc;
+ color axe, aroc, cubevertex, conecenter, conevertex;
+ color allellaxe, ellaaxe, ellbaxe, pca, pea, pcb, peb;
+ frac := 0.5;
+ len := 0.6;
+ wang := 60;
+ axe := (0,cosd(90-wang),sind(90-wang));
+ fws := 4;
+ reflen := 0.2*fws;
+ outay := 0.45*fws;
+ inray := 0.7*outay;
+ coordg := frac*fws;
+ NumLines := 30;
+ HoriZon := -0.5*fws;
+ setthestage( 0.5*NumLines, 2*fws );
+ cubevertex = (0.12*fws,-0.5*fws,-0.5*fws);
+ kindofcube(false,true,cubevertex,180,0,0,0.65*fws,0.2*fws,fws);
+ aroc := outay*(0,cosd(wang),sind(wang))-0.5*(0,fws,fws);
+ rigorousdisc( inray, true, aroc, outay, axe*len );
+ allellaxe := reflen*( 0.707, 0.707, 0 );
+ ellaaxe := reflen*( 0.707, -0.707, 1.0 );
+ ellbaxe := reflen*( -0.707, 0.707, 1.0 );
+ conecenter = ( coordg, coordg, -0.5*fws );
+ pca := ( coordg, -coordg, -0.5*fws );
+ pcb := ( -coordg, coordg, -0.5*fws );
+ pea := ( coordg, -coordg, 0.9*fws );
+ peb := ( -coordg, coordg, 0.9*fws );
+ cira := goodcirclepath( pca, blue, reflen );
+ cirb := goodcirclepath( pcb, blue, reflen );
+ ella := ellipticpath( pea, allellaxe, ellaaxe );
+ ellb := ellipticpath( peb, allellaxe, ellbaxe );
+ tuba := twocyclestogether( cira, ella );
+ tubb := twocyclestogether( cirb, ellb );
+ tubc := twocyclestogether( ella, ellb );
+ unfill tubb; draw tubb;
+ unfill tubc; draw tubc;
+ unfill tuba; draw tuba;
+ conevertex = conecenter + ( -3.5*reflen, 0, 0.8*fws );
+ verygoodcone(false,conecenter,blue,reflen,conevertex);
+endfig;
+
+Spread := 23;
+f := (6,13,3);
+ShadowOn := true;
+
+beginfig(2);
+ numeric reflen, frac, coordg;
+ numeric fws, NumLines;
+ path ella, ellb;
+ color axe, cubevertex;
+ color allellaxe, ellaaxe, pca, pcb;
+ frac := 0.5;
+ wang := 60;
+ axe := (0,cosd(90-wang),sind(90-wang));
+ fws := 4;
+ reflen := 0.35*fws;
+ coordg := frac*fws;
+ NumLines := 52;
+ HoriZon := -0.5*fws;
+ setthestage( 0.5*NumLines, 3.6*fws );
+ cubevertex = (0.3*fws,-0.5*fws,-0.5*fws);
+ kindofcube(false,true,cubevertex,180,0,0,0.6*fws,0.2*fws,fws);
+ allellaxe := reflen*( 0.707, 0.707, 0 );
+ ellaaxe := reflen*( 0.5, -0.5, 0 );
+ pca := ( coordg, coordg, -0.5*fws );
+ pcb := ( -coordg, coordg, -0.5*fws );
+
+ whatisthis( pca, 0.5*ellaaxe, allellaxe, reflen, 0.3 );
+ whatisthis( pcb, ellaaxe*sqrt(2), allellaxe/sqrt(2), 2*reflen, 0.6 );
+
+endfig;
+
+Spread := 23;
+f := (13,6,4.5);
+ShadowOn := true;
+LightSource := 10*(4,-3,6);
+beginfig(3);
+ numeric reflen, frac, coordg;
+ numeric fws, NumLines;
+ path ella, ellb;
+ color axe, cubevertex, conecenter, conevertex;
+ color allellaxe, ellaaxe, pca, pcb;
+ frac := 0.5;
+ wang := 60;
+ axe := (0,cosd(90-wang),sind(90-wang));
+ fws := 4;
+ reflen := 0.35*fws;
+ coordg := frac*fws;
+ NumLines := 45;
+ HoriZon := -0.5*fws;
+ setthestage( 0.5*NumLines, 3.3*fws );
+ cubevertex = (0.3*fws,-0.5*fws,0);
+ tropicalglobe( 7, cubevertex, 0.5*fws, axe );
+ allellaxe := reflen*( 0.707, 0.707, 0 );
+ ellaaxe := reflen*( 0.5, -0.5, 0 );
+ pcb := ( -coordg, coordg, 0 );
+ rigorousdisc( 0, true, pcb, 0.5*fws, -ellaaxe );
+ conecenter = ( coordg, coordg, -0.5*fws );
+ conevertex = conecenter + ( 0, 0, 0.9*fws );
+ verygoodcone(false,conecenter,blue,reflen,conevertex);
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/tangencypoint.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/tangencypoint.mp
new file mode 100644
index 00000000000..7c6d8f79601
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/tangencypoint.mp
@@ -0,0 +1,38 @@
+% tangencypoint.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric u, i;
+ u = 5mm;
+ pen a, b, c;
+ a = pencircle scaled 3pt;
+ b = pencircle scaled 5pt;
+ c = pencircle scaled 1pt;
+ z1 = (1u,1u);
+ z2 = (4u,4u);
+ z3 = (4u,5u);
+ z4 = (3u,5u);
+ z5 = (3u,6u);
+ z6 = (4u,7u);
+ z7 = (6u,1u);
+ path cp;
+ cp = z1{up}..z2..z3..z4..z5..{up}z6;
+ draw cp withpen c;
+ for i=1 upto 6:
+ draw z[i] withpen a withcolor 0.5*(red+green);
+ endfor;
+ z8 = firsttangencypoint( cp, z7, 5 );
+ draw z7 withpen b withcolor green;
+ draw z7--z8 withpen c withcolor blue;
+endfig;
+
+end.
+
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/tdarrow.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/tdarrow.mp
new file mode 100644
index 00000000000..5ef43d52524
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/tdarrow.mp
@@ -0,0 +1,26 @@
+% tdarrow.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric size, num, i, j, coos[];
+ string comm;
+ color tmpc, fro, tip;;
+ size = 1.5;
+ num = 250;
+ draw rp(black)--rp((size,0,0))--rp((size,size,0))--rp((0,size,0))--cycle;
+ for i=1 upto num:
+ for j=1 upto 6:
+ coos[j] := uniformdeviate(size);
+ endfor;
+ fro := (coos1,coos2,coos3);
+ tip := (coos4,coos5,coos6);
+ comm := "tdarrow(" & cstr(fro) & "," & cstr(tip) & ");";
+ tmpc := 0.5[fro,tip];
+ getready( comm, tmpc );
+ endfor;
+ doitnow;
+endfig;
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/thearchicon.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/thearchicon.mp
new file mode 100644
index 00000000000..3c9acb10391
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/thearchicon.mp
@@ -0,0 +1,59 @@
+% thearchicon.mp
+% L. Nobre G.
+% 2002
+
+%input featpost3Dplus2D;
+
+f := 0.8*(6,3,4);
+
+beginfig(1);
+ color tracecol, lockcol;
+ numeric altura, compri, radius, altfrac, comfrac, radang;
+ path theside, thefront, thelocka, thelockb, thelock;
+ color poi[];
+ numeric numpl, aux, i;
+ altura = 1;
+ compri = 2;
+ radius = 0.8;
+ altfrac = 0.2;
+ comfrac = 0.15;
+ radang = 37;
+ numpl = 9;
+ tracecol = blue;
+ lockcol = black;
+ currentpen := pencircle scaled 3mm;
+ drawoptions( withcolor tracecol );
+ rigorousdisc( 0, true, (-0.5compri,0,0), radius, (compri,0,0) );
+ poi1 = (0.5compri,-radius,0);
+ poi2 = (0.5compri,radius,0);
+ poi3 = (-0.5compri,radius,0);
+ poi4 = (0.5compri,-radius,-altura);
+ poi5 = (0.5compri,radius,-altura);
+ poi6 = (-0.5compri,radius,-altura);
+ theside = rp(poi1)--rp(poi2)--rp(poi5)--rp(poi4)--cycle;
+ thefront= rp(poi2)--rp(poi3)--rp(poi6)--rp(poi5)--cycle;
+ drawoptions( withcolor background );
+ fill theside;
+ fill thefront;
+ thelocka = rp((comfrac*compri,radius,-altfrac*altura))
+ --rp((comfrac*compri,radius,0));
+ thelockb = rp((-comfrac*compri,radius,-altfrac*altura))
+ --rp((-comfrac*compri,radius,0));
+ for i=1 upto numpl:
+ aux := i*radang/numpl;
+ poi7 := (comfrac*compri,radius*cosd(aux),radius*sind(aux));
+ poi8 := (-comfrac*compri,radius*cosd(aux),radius*sind(aux));
+ thelocka := thelocka...rp(poi7);
+ thelockb := thelockb...rp(poi8);
+ endfor;
+ thelock = thelocka--reverse thelockb--cycle;
+ drawoptions( withcolor lockcol );
+ filldraw thelock;
+ drawoptions( withcolor tracecol );
+ draw theside;
+ draw thefront;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/thethreekindsofperspec.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/thethreekindsofperspec.mp
new file mode 100644
index 00000000000..3d9ffe9e0d1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/thethreekindsofperspec.mp
@@ -0,0 +1,195 @@
+% thethreekindsofperspec.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+f := (4,2,2.5);
+Spread := 45;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton,concmath,ccfonts}
+\begin{document}
+etex
+
+color psdf, psdu, psdv, rll, rlr, rur, rul, pll, plr, pur, pul;
+color pc;
+numeric projecplanesize, sizefraction, positfraction, aspectratio, rectsize;
+pen realpen, lightpen, projpen, dotpen;
+path projecplanepath, realpath;
+psdf = 3.1*(0,1,0.37);
+projecplanesize = 1.7;
+sizefraction = 0.19;
+positfraction = 0.65;
+aspectratio = 1.0;
+rectsize = 0.15;
+realpen = pencircle scaled 2.6pt;
+lightpen = pencircle scaled 0.55pt;
+projpen = pencircle scaled 1.8pt;
+dotpen = pencircle scaled 3.8pt;
+psdv = N( (-Y(psdf), X(psdf), 0) );
+psdu = ncrossprod( psdf, psdv );
+pll = projecplanesize*(-aspectratio*psdv-psdu);
+plr = projecplanesize*(+aspectratio*psdv-psdu);
+pur = projecplanesize*(+aspectratio*psdv+psdu);
+pul = projecplanesize*(-aspectratio*psdv+psdu);
+projecplanepath = rp(pll)--rp(plr)--rp(pur)--rp(pul)--cycle;
+pc = positfraction*psdf;
+rll = pc+sizefraction*projecplanesize*(-psdv-psdu);
+rlr = pc+sizefraction*projecplanesize*(+psdv-psdu);
+rur = pc+sizefraction*projecplanesize*(+psdv+psdu);
+rul = pc+sizefraction*projecplanesize*(-psdv+psdu);
+realpath = rp(rll)--rp(rlr)--rp(rur)--rp(rul)--cycle;
+
+beginfig(1);
+ draw projecplanepath withpen realpen;
+ draw realpath withpen realpen;
+ draw rp(psdf) withpen lightpen;
+ drawoptions( withpen lightpen );
+ squareangline( psdf, psdv, black, rectsize );
+ squareangline( psdf, psdu, black, rectsize );
+ drawoptions();
+ pair prll, prlr, prur, prul;
+ prll = rp(rll-pc);
+ prlr = rp(rlr-pc);
+ prur = rp(rur-pc);
+ prul = rp(rul-pc);
+ path projpath;
+ projpath = prll--prlr--prur--prul--cycle;
+ draw projpath withpen projpen;
+ draw prll--rp(rll+(1-positfraction)*psdf) withpen lightpen;
+ draw prlr--rp(rlr+(1-positfraction)*psdf) withpen lightpen;
+ draw prur--rp(rur+(1-positfraction)*psdf) withpen lightpen;
+ draw prul--rp(rul+(1-positfraction)*psdf) withpen lightpen;
+ draw rp(black)--rp(psdf) withpen lightpen;
+ draw rp(black) withpen dotpen;
+ draw rp(psdf) withpen dotpen;
+ label.rt( btex f etex, rp(psdf) );
+% label.bot( btex viewcentr etex, rp(black) );
+endfig;
+
+beginfig(2);
+ draw projecplanepath withpen realpen;
+ draw realpath withpen realpen;
+ draw rp(psdf) withpen lightpen;
+ drawoptions( withpen lightpen );
+ squareangline( psdf, psdv, black, rectsize );
+ squareangline( psdf, psdu, black, rectsize );
+ drawoptions();
+ pair prll, prlr, prur, prul;
+ LightSource:=psdf;
+ prll = rp(projectpoint(black,rll));
+ prlr = rp(projectpoint(black,rlr));
+ prur = rp(projectpoint(black,rur));
+ prul = rp(projectpoint(black,rul));
+ path projpath;
+ projpath = prll--prlr--prur--prul--cycle;
+ draw projpath withpen projpen;
+ draw prll--rp(psdf) withpen lightpen;
+ draw prlr--rp(psdf) withpen lightpen;
+ draw prur--rp(psdf) withpen lightpen;
+ draw prul--rp(psdf) withpen lightpen;
+ draw rp(black)--rp(psdf) withpen lightpen;
+ draw rp(black) withpen dotpen;
+ draw rp(psdf) withpen dotpen;
+ label.rt( btex f etex, rp(psdf) );
+ label.bot( btex viewcentr etex, rp(black) );
+endfig;
+
+beginfig(3);
+ draw projecplanepath withpen realpen;
+ draw realpath withpen realpen;
+ draw rp(psdf) withpen lightpen;
+ drawoptions( withpen lightpen );
+ squareangline( psdf, psdv, black, rectsize );
+ squareangline( psdf, psdu, black, rectsize );
+ numeric dist;
+ dist = conorm( psdf );
+ color ml, mt, mr, mb;
+ mb = 0.5[rll,rlr];
+ ml = 0.5[rll,rul];
+ mr = 0.5[rur,rlr];
+ mt = 0.5[rur,rul];
+ drawoptions( withpen projpen );
+ angline( rll, mb, psdf, dist, "", top );
+ angline( rll, ml, psdf, dist, "", top );
+ angline( rur, mt, psdf, dist, "", top );
+ angline( rur, mr, psdf, dist, "", top );
+ angline( mb, rlr, psdf, dist, "", top );
+ angline( ml, rul, psdf, dist, "", top );
+ angline( mr, rlr, psdf, dist, "", top );
+ angline( mt, rul, psdf, dist, "", top );
+ angline( black, mb, psdf, dist, "", top );
+ angline( black, ml, psdf, dist, "", top );
+ angline( black, mr, psdf, dist, "", top );
+ angline( black, mt, psdf, dist, "", top );
+ drawoptions();
+ numeric marc, darc, dmarc, ddarc;
+ marc = 0.01745*getangle(-psdf,mt-psdf)*dist;
+ darc = 0.01745*getangle(-psdf,rll-psdf)*dist*0.707;
+ color pro[], esf[], proc[], esfc[];
+ pro1 = darc*(-psdv-psdu);
+ pro2 = marc*(-psdu);
+ pro3 = darc*(+psdv-psdu);
+ pro4 = marc*(+psdv);
+ pro5 = darc*(+psdv+psdu);
+ pro6 = marc*(+psdu);
+ pro7 = darc*(-psdv+psdu);
+ pro8 = marc*(-psdv);
+ esf1 = psdf+dist*N(rll-psdf);
+ esf2 = psdf+dist*N(mb-psdf);
+ esf3 = psdf+dist*N(rlr-psdf);
+ esf4 = psdf+dist*N(mr-psdf);
+ esf5 = psdf+dist*N(rur-psdf);
+ esf6 = psdf+dist*N(mt-psdf);
+ esf7 = psdf+dist*N(rul-psdf);
+ esf8 = psdf+dist*N(ml-psdf);
+ ddarc = conorm(pro1-esf1)/3;
+ dmarc = conorm(pro2-esf2)/3;
+ proc1 = pro1+ddarc*N(psdf);
+ proc2 = pro2+dmarc*N(psdf);
+ proc3 = pro3+ddarc*N(psdf);
+ proc4 = pro4+dmarc*N(psdf);
+ proc5 = pro5+ddarc*N(psdf);
+ proc6 = pro6+dmarc*N(psdf);
+ proc7 = pro7+ddarc*N(psdf);
+ proc8 = pro8+dmarc*N(psdf);
+ esfc1 = esf1+ddarc*N(rll-psdf);
+ esfc2 = esf2+dmarc*N(mb-psdf);
+ esfc3 = esf3+ddarc*N(rlr-psdf);
+ esfc4 = esf4+dmarc*N(mr-psdf);
+ esfc5 = esf5+ddarc*N(rur-psdf);
+ esfc6 = esf6+dmarc*N(mt-psdf);
+ esfc7 = esf7+ddarc*N(rul-psdf);
+ esfc8 = esf8+dmarc*N(ml-psdf);
+ numeric i;
+ drawoptions( withpen lightpen );
+ for i=1 upto 8:
+ draw rp(esf[i])..controls rp(esfc[i]) and rp(proc[i])..rp(pro[i]);
+ draw rp(psdf)--rp(esf[i]);
+ endfor;
+ draw rp(pro2)--rp(pro6);
+ draw rp(pro4)--rp(pro8);
+ draw rp(mb)--rp(mt);
+ draw rp(ml)--rp(mr);
+ drawoptions( withpen projpen );
+ draw rp(pro1)...rp(pro2)..rp(pro3);
+ draw rp(pro3)...rp(pro4)..rp(pro5);
+ draw rp(pro5)...rp(pro6)..rp(pro7);
+ draw rp(pro7)...rp(pro8)..rp(pro1);
+ draw rp(black)--rp(psdf) withpen lightpen;
+ draw rp(black) withpen dotpen;
+ draw rp(psdf) withpen dotpen;
+ label.rt( btex f etex, rp(psdf) );
+% label.ulft( btex viewcentr etex, rp(black) );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end; \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/torus.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/torus.mp
new file mode 100644
index 00000000000..e629e85823a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/torus.mp
@@ -0,0 +1,297 @@
+% torus
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+% Draw a torus with NP dots, a section of 3.14*RS^2
+% and a total diameter of 2*(RB+RS). The dots are placed
+% on a single closed line that turns around the $z$ axis
+% NB times and around the section NS times.
+% figure(1) exemplifies the use of signalvertex.
+
+def flask( expr TheVal ) =
+ begingroup
+ numeric RB, RS, RP, NB, NS, NM, phi, theta, first, second, third;
+ RB=1;
+ RS=0.3;
+ RP=0.02;
+ NB=8;
+ NS=5;
+ NM=4;
+ theta=360*NB*TheVal;
+ phi=360*NS*TheVal;
+ first =(RB+(RS+RP*sind(NM*theta))*cosd(phi))*cosd(theta);
+ second=(RB+(RS+RP*sind(NM*theta))*cosd(phi))*sind(theta);
+ third = (RS+RP*sind(NM*theta))*sind(phi);
+ ( (first,second,third) )
+ endgroup
+enddef;
+
+def blask( expr TheVal ) =
+ begingroup
+ numeric RB, RS, NB, NS, phi, theta, first, second, third;
+ RB=1;
+ RS=0.1;
+ NB=1;
+ NS=24;
+ theta=360*NB*TheVal;
+ phi=360*NS*TheVal;
+ first =(RB+RS*cosd(phi))*cosd(theta);
+ second=(RB+RS*cosd(phi))*sind(theta);
+ third = RS*sind(phi);
+ ( (first,second,third) )
+ endgroup
+enddef;
+
+beginfig(5);
+ Spread := 200;
+ numeric NP, i, varfrac;
+ path cl;
+ string comm;
+ pen bip, sp;
+ varfrac = 1.25;
+ bip = pencircle scaled 15pt;
+ sp = pencircle scaled 9pt;
+ NP=600;
+ cl = for i=1 upto NP: rp(flask(i/NP)).. endfor cycle;
+ draw cl;
+ for i=1 upto NP:
+ comm:="draw subpath ("
+ & decimal(i-0.5)
+ & ","
+ & decimal(i+0.5)
+ & ") of cl withpen bip; undraw subpath ("
+ & decimal(i-varfrac)
+ & ","
+ & decimal(i+varfrac)
+ & ") of cl withpen sp;";
+ getready( comm, flask( i/NP ) );
+ endfor;
+ closedline( true, 300, 0.5, 1 )( blask );
+ doitnow;
+endfig;
+
+beginfig(6);
+ Spread := 100;
+ f := (7,3,9);
+ HoriZon := -2;
+ LightSource := (1,-1,15);
+ numeric sinthe, costhe, ux, uz, lx, lz, co, i;
+ costhe = (4*sqrt(5)-sqrt(3))/11;
+ sinthe = sqrt(1-(costhe**2));
+ ux = costhe*sqrt(2)/2;
+ uz = sinthe/2;
+ lx = sqrt(4/3)*sinthe;
+ lz = -sqrt(2/3)*costhe;
+ co = sqrt(2)*(2*sqrt(5)+5*sqrt(3))/22;
+ V1 := (ux,0,-uz);
+ V2 := (lx,0,-lz);
+ V3 := (0,ux,uz); V15:= (0,-ux,uz);
+ V4 := (0,lx,lz); V16:= (0,-lx,lz);
+ V5 := (co,co,0); V14:= (-co,-co,0);
+ V6 := (-ux,0,-uz);
+ V7 := (-lx,0,-lz);
+ V8 := (-co,co,0); V13:= (co,-co,0);
+ V9 := improvertex( V5, 1, V4, 1, V3, sqrt(3)-1, (0,1,0) );
+ V10:= (-X(V9),-Y(V9),Z(V9));
+ V11:= (Y(V9),-X(V9),-Z(V9));
+ V12:= (-Y(V9),X(V9),-Z(V9));
+ makeface1(1,2,3);
+ makeface2(1,2,5);
+ makeface3(2,3,5);
+ makeface4(9,4,5);
+ makeface5(3,4,1);
+ makeface6(1,4,5);
+ makeface7(3,6,7);
+ makeface8(3,7,8);
+ makeface9(6,7,8);
+ makeface10(9,8,4);
+ makeface11(4,6,8);
+ makeface12(3,4,6);
+ makeface13(3,5,9);
+ makeface14(3,8,9);
+ makeface15(7,8,12);
+ makeface16(7,14,12);
+ makeface17(6,8,12);
+ makeface18(6,14,12);
+ makeface19(2,5,11);
+ makeface20(2,13,11);
+ makeface21(1,5,11);
+ makeface22(1,13,11);
+ makeface23(10,15,13);
+ makeface24(10,15,14);
+ makeface25(10,16,13);
+ makeface26(10,16,14);
+ makeface27(2,1,15);
+ makeface28(6,7,15);
+ makeface29(13,15,2);
+ makeface30(14,15,7);
+ makeface31(16,1,15);
+ makeface32(16,6,15);
+ for i=1 upto 32:
+ FC[i] := TableColors;
+ FCD[i]:= true;
+ endfor;
+ ShadowOn := true;
+ setthearena(15,6);
+ fill_faces();
+ draw_invisible( false, false, TableC3, TableC0 );
+% drawoptions( withcolor red );
+% for i=1 upto 16:
+% label.bot( decimal( i ), rp( V[i] ) );
+% endfor;
+endfig;
+
+beginfig(1);
+ Spread := 140;
+ NP:=2000;
+ RB:=1;
+ RS:=0.2;
+ R3:=0.1;
+ NB:=8;
+ NS:=5;
+ jB:=360*NB/NP;
+ jS:=360*NS/NP;
+ for i=1 upto NP:
+ phi :=i*jS;
+ theta :=i*jB;
+ first :=(RB+(RS+R3*sind(4*theta))*cosd(phi))*cosd(theta);
+ second:=(RB+(RS+R3*sind(4*theta))*cosd(phi))*sind(theta);
+ third := (RS+R3*sind(4*theta))*sind(phi);
+ signalvertex( (first,second,third), 1, black );
+ endfor;
+endfig;
+
+% Draw a torus with faces.
+
+beginfig(2);
+
+ PrintStep := 7;
+
+ f := ( 3,1,1 );
+
+ RB:=1;
+ RS:=0.25;
+ NB:=3;
+ NS:=5;
+ jB:=360/NB;
+ jS:=360/NS;
+ iS:=jS;
+ iB:=jB;
+ counter:=0;
+ for i=1 upto NB:
+ for j=1 upto NS:
+ counter := incr(counter);
+ npf[counter]:= 4;
+ phi :=j*jS;
+ theta:=i*jB;
+ f1 :=(RB+(RS)*cosd(phi))*cosd(theta);
+ s1 :=(RB+(RS)*cosd(phi))*sind(theta);
+ t1 := (RS)*sind(phi);
+ F[counter]p[1]:=(f1,s1,t1);
+ f2 :=(RB+(RS)*cosd(phi))*cosd(theta+iB);
+ s2 :=(RB+(RS)*cosd(phi))*sind(theta+iB);
+ t2 := (RS)*sind(phi);
+ F[counter]p[2]:=(f2,s2,t2);
+ f3 :=(RB+(RS)*cosd(phi+iS))*cosd(theta+iB);
+ s3 :=(RB+(RS)*cosd(phi+iS))*sind(theta+iB);
+ t3 := (RS)*sind(phi+iS);
+ F[counter]p[3]:=(f3,s3,t3);
+ f4 :=(RB+(RS)*cosd(phi+iS))*cosd(theta);
+ s4 :=(RB+(RS)*cosd(phi+iS))*sind(theta);
+ t4 := (RS)*sind(phi+iS);
+ F[counter]p[4]:=(f4,s4,t4);
+ endfor;
+ endfor;
+ NF:=counter;
+% faceraytrace(0.3, blue);
+% draw_all_test(false);
+ sharpraytrace;
+endfig;
+
+beginfig(3);
+ f := (6,2,4);
+% f := (6,2,7); % NO CUSP.
+ Spread:=70;
+ HoriZon := -2;
+ ShadowOn := true;
+ numeric bigray, smaray, angstep;
+ color toruscenter, torusmoment, nearaxe, sideaxe, viewline;
+ color circlecenter, circlemoment;
+ numeric ang, ind, i, anglim;
+ path cpath, apath, opath, ipath, wp, ep;
+ pair outerp[], innerp[], refpair;
+ pen markpen;
+ boolean cuspcond;
+ picture holepic;
+ markpen = pencircle scaled 5pt;
+ pickup markpen;
+ bigray = 2;
+ smaray = 1;
+ angstep= 2;
+ toruscenter = black;
+ torusmoment = (0,1,2);
+ refpair = unitvector( rp(toruscenter+torusmoment)-rp(toruscenter) );
+ viewline = f-toruscenter;
+ ind = 0;
+ sideaxe = bigray*ncrossprod( torusmoment, viewline );
+ nearaxe = bigray*ncrossprod( sideaxe, torusmoment );
+ anglim = 0.5*angstep-180;
+ if ShadowOn:
+ for ang=anglim step angstep until -anglim:
+ circlecenter:= nearaxe*cosd(ang)+sideaxe*sind(ang);
+ circlemoment:=-nearaxe*sind(ang)+sideaxe*cosd(ang);
+ filldraw circleshadowpath(circlecenter,circlemoment,smaray);
+ endfor;
+ fi;
+ for ang=anglim step angstep until -anglim:
+ ind := incr( ind );
+ circlecenter:= nearaxe*cosd(ang)+sideaxe*sind(ang);
+ circlemoment:=-nearaxe*sind(ang)+sideaxe*cosd(ang);
+ cpath:=spatialhalfcircle(circlecenter,circlemoment,smaray,true);
+ if ang>=0:
+ outerp[ind]=point 0 of cpath;
+ innerp[ind]=point (length cpath) of cpath;
+ elseif ang<0:
+ innerp[ind]=point 0 of cpath;
+ outerp[ind]=point (length cpath) of cpath;
+ fi;
+ endfor;
+ opath = for i=1 upto ind: outerp[i].. endfor cycle;
+ ipath = for i=1 upto ind: innerp[i].. endfor cycle;
+ holepic = currentpicture;
+ clip holepic to ipath;
+ unfill opath;
+ draw holepic;
+ draw opath withcolor green;
+ draw ipath withcolor red;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Perhaps there is an analytic way of getting the angle of the cusp point? %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ i := ceiling(1+180/angstep);
+ forever:
+ i := incr( i );
+ cuspcond := refpair dotprod innerp[i+1] < refpair dotprod innerp[i];
+ exitif cuspcond or ( i > ind-1 );
+ endfor;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ ep = outerp[ind-i]--innerp[ind-i];
+ wp = innerp[i]--outerp[i];
+ unfill buildcycle(opath,ep,reverse ipath,wp);
+ draw opath withcolor green;
+ draw subpath (i,ind-i) of ipath withcolor red;
+endfig;
+
+beginfig(4);
+ f := (16,2,3.8);
+ Spread:=40;
+ pickup pencircle scaled 3pt;
+ smoothtorus( black-3*blue, blue, 4, 1 );
+ smoothtorus( black, blue, 4, 1 );
+ smoothtorus( black+3*blue, blue, 4, 1 );
+endfig;
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp
new file mode 100644
index 00000000000..30fe6235713
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp
@@ -0,0 +1,88 @@
+% trajectoryline.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 30;
+f := (10,0,0);
+
+color posa, posb, axer;
+numeric kfac, refrad;
+posa = -5*green;
+posb = 5*green;
+axer = blue;
+kfac = 2.5;
+refrad = 1;
+
+def vecfunc( expr posit )=
+ begingroup
+ save modula, modulb, field;
+ color field;
+ numeric modula, modulb;
+ modula = conorm( posit-posa );
+ modulb = conorm( posit-posb );
+ field = ( posit-posa )/(modula**3)+kfac*( posit-posb )/(modulb**3);
+ ( -field )
+ endgroup
+enddef;
+
+def magfunc( expr posit )=
+ begingroup
+ save perpd, refvec, dist;
+ color perpd, refvec;
+ numeric dist;
+ perpd = ccrossprod( axer, posit );
+ refvec = posit - refrad*ncrossprod( perpd, axer );
+ dist = conorm( refvec );
+ ( ncrossprod( refvec, perpd )/(dist**2) )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric i, lena, numa, sa, diffstep, ray;
+ color stp, svl;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 400;
+ numa = 58;
+ diffstep = 0.12;
+ ray = 3.5;
+ sa = 168;
+ for i=sa step numa until (180):
+ stp := ( 0, ray*cosd(i), ray*sind(i) );
+ svl := N( -stp );
+ oneline := trajectorypath( lena, stp, svl, diffstep, vecfunc );
+ draw oneline withpen grossa;
+ draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(posa) withpen grossa;
+ draw rp(posb) withpen grossa;
+endfig;
+
+beginfig(2);
+ numeric i, lena, numa, sa, diffstep, ray;
+ color stp, svl;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 100;
+ numa = 4;
+ diffstep = 1;
+ ray = 5.5;
+ sa = 97;
+ for i=sa step numa until (120):
+ stp := ( 0, ray*cosd(i), ray*sind(i) );
+ svl := 0.8*N( -stp );
+ oneline := magnetictrajectorypath( lena, stp, svl, diffstep, magfunc );
+ draw oneline withpen grossa;
+ draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(black) withpen grossa;
+endfig;
+
+end.
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/triangulartrimesh.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/triangulartrimesh.mp
new file mode 100644
index 00000000000..1a19c776976
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/triangulartrimesh.mp
@@ -0,0 +1,39 @@
+% triangulartrimesh.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+def zsurface( expr xc, yc ) =
+ cosd(xc*57)*cosd(yc*57)+4*mexp(-(xc**2+yc**2)*6.4)
+enddef;
+
+f := 16*(4,1,1);
+Spread := 35;
+LightSource := 10*(4,-3,4);
+defaultfont := "cmvtt10";
+beginfig(1);
+ numeric np, ssize, lx, ly, topl, ystep, i, zl;
+ string L[];
+ L0 = "P";
+ L1 = "H";
+ L2 = "Y";
+ L3 = "S";
+ L4 = "I";
+ L5 = "C";
+ L6 = "S";
+ np = 72;
+ ssize = 15;
+ ly = -0.5*ssize;
+ lx = -sqrt(3)*ssize/6;
+ ystep = ssize/7;
+ topl = 2*zsurface( 0, 0 );
+ for i=0 upto 6:
+ zl := zsurface(lx,i*ystep+ly);
+ labelinspace(false,(lx,i*ystep+ly,zl),green*ystep,blue*(topl-zl),L[i]);
+ endfor;
+ hexagonaltrimesh( false,np,ssize,zsurface);
+ label.ulft("matagalatlante.org",lrcorner currentpicture);
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/tropicalglobe.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/tropicalglobe.mp
new file mode 100644
index 00000000000..e861c8c4462
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/tropicalglobe.mp
@@ -0,0 +1,23 @@
+% tropicalglobe.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric radius, numc;
+ pen thickp;
+
+ f := (3,0,2);
+ viewcentr := 0.5*(1,1,1);
+ Spread := 20;
+ radius = 1;
+ numc = 18;
+ thickp = pencircle scaled 1mm;
+
+ drawoptions( withpen thickp );
+ tropicalglobe( numc, black, radius, blue );
+ produce_auto_scale;
+endfig;
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/tshirtfig.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/tshirtfig.mp
new file mode 100644
index 00000000000..3873ab3c1fa
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/tshirtfig.mp
@@ -0,0 +1,39 @@
+% tshirtfig.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ f := (5,4,3);
+ Spread := 70;
+ pickup pencircle scaled 2.4pt;
+ numeric gridstep, cylength, cyradius, numcylis;
+ numeric i, j, curcoord, curangle, curnorma, tmp;
+ numeric othcoord, othangle, zcoord, coef, othnorma;
+ color base, lenvec;
+ cylength := 0.2;
+ cyradius := 0.3;
+ gridstep := cyradius*2.2;
+ numcylis := 7;
+ coef := 0.22;
+ for i=1 upto numcylis: % saddle
+ curnorma := i-0.5*(numcylis+1);
+ curcoord := curnorma*gridstep;
+ curangle := -curcoord*2*coef;
+ for j=1 upto numcylis:
+ othnorma := j-0.5*(numcylis+1);
+ othcoord := othnorma*gridstep;
+ othangle := othcoord*2*coef;
+ zcoord:=coef*(othcoord**2-curcoord**2);
+ base := (curcoord,othcoord,zcoord);
+ lenvec := cylength*N((-curangle,-othangle,1));
+ tmp := zcoord/2.4+0.8;
+ if tmp > 1: show tmp; fi;
+ background := tmp*TableC2;
+ rigorousdisc( 0, true,base,cyradius,lenvec);
+ endfor;
+ endfor;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/tuftescatter.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/tuftescatter.mp
new file mode 100644
index 00000000000..2df874ec1dc
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/tuftescatter.mp
@@ -0,0 +1,83 @@
+% tuftescatter.mp
+% L. Nobre G.
+% IYP (2005)
+
+% input featpost3Dplus2D;
+
+def linscatter = uniformdeviate( 2 ) - 1 enddef;
+
+def fullcalculator =
+ begingroup
+ color aux;
+ numeric cx, cy;
+ forever:
+ cx := linscatter;
+ cy := linscatter;
+ exitif cx ++ cy < 0.8; % Saddle ray
+ endfor;
+ aux = ( cx, cy, cx*cx-cy*cy );
+ ( eulerrotation( -25, -15, -5, aux ) ) % Rotation angles
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric totalnum, classnum, sparksiz, pointray;
+ totalnum = 350; % Number of data points
+ classnum = 30; % Number of sparkline classes
+ sparksiz = 0.34; % Maximum sparkline height
+ pointray = 0.025; % Size of the data points
+ f := ( 7, 6, 5 );
+ Spread := 150;
+ numeric i, j, k, l, hx[], hy[], hz[], classtep;
+ classtep = 2/classnum;
+ color tmp;
+ for j=0 upto classnum:
+ hx[j] = 0;
+ hy[j] = 0;
+ hz[j] = 0;
+ endfor;
+ for l=1 upto totalnum:
+ tmp := fullcalculator;
+ for k=1 upto classnum:
+ if ( X(tmp) <= k*classtep-1 ) and ( X(tmp) > (k-1)*classtep-1 ):
+ hx[k] := incr( hx[k] );
+ fi;
+ if ( Y(tmp) <= k*classtep-1 ) and ( Y(tmp) > (k-1)*classtep-1 ):
+ hy[k] := incr( hy[k] );
+ fi;
+ if ( Z(tmp) <= k*classtep-1 ) and ( Z(tmp) > (k-1)*classtep-1 ):
+ hz[k] := incr( hz[k] );
+ fi;
+ endfor;
+ draw rigorouscircle( (-1,Y(tmp),Z(tmp)), red, pointray );
+ draw rigorouscircle( (X(tmp),-1,Z(tmp)), green, pointray );
+ draw rigorouscircle( (X(tmp),Y(tmp),-1), blue, pointray );
+ getready("fill rigorousfearpath("
+ & cstr( tmp )
+ & ",pointray) withcolor blue; draw rigorousfearpath("
+ & cstr( tmp )
+ & ",pointray); ", tmp);
+ endfor;
+ numeric maxn, sparkfac;
+ maxn = 0;
+ for i=1 upto classnum:
+ if hx[i]>maxn: maxn := hx[i]; fi;
+ if hy[i]>maxn: maxn := hy[i]; fi;
+ if hz[i]>maxn: maxn := hz[i]; fi;
+ endfor;
+ sparkfac = sparksiz/maxn;
+ for j=1 upto classnum:
+ draw rp(((j-1)*classtep-1,1+sparkfac*hx[j-1],-1))
+ --rp(((j-1)*classtep-1,1+sparkfac*hx[j],-1))
+ --rp((j*classtep-1,1+sparkfac*hx[j],-1));
+ draw rp((-1,(j-1)*classtep-1,1+sparkfac*hy[j-1]))
+ --rp((-1,(j-1)*classtep-1,1+sparkfac*hy[j]))
+ --rp((-1,j*classtep-1,1+sparkfac*hy[j]));
+ draw rp((-1,1+sparkfac*hz[j-1],(j-1)*classtep-1))
+ --rp((-1,1+sparkfac*hz[j],(j-1)*classtep-1))
+ --rp((-1,1+sparkfac*hz[j],j*classtep-1));
+ endfor;
+ doitnow;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/twistflat.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/twistflat.mp
new file mode 100644
index 00000000000..080f3364282
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/twistflat.mp
@@ -0,0 +1,55 @@
+% twistflat.mp
+% L. Nobre G.
+% Y2K
+
+%input featpost3Dplus2D;
+
+
+
+beginfig(1);
+
+ f := 0.7*(1.5,0.3,1.2);
+
+ Spread := 700;
+
+ color gridvec, sizevec, currpos, starpos, bordpos;
+ numeric i, j, k, counter, theta, phi, thetamin,
+ thetamax, thetastp, long, base;
+ sizevec := (11,6,1);
+ gridvec := (0.05,0.1,0.1);
+ thetamin := 55;
+ thetamax := 125;
+ long := 0.08;
+ base := 0.1;
+ thetastp := (thetamax-thetamin)/(X(sizevec)-1);
+ starpos := ( -0.5*X(gridvec)*(X(sizevec)-1) ,
+ -0.5*Y(gridvec)*(Y(sizevec)-1) ,
+ -0.5*Z(gridvec)*(Z(sizevec)-1) );
+ bordpos := starpos - 0.5*gridvec;
+ npf1 := 4;
+ F1p1 := bordpos;
+ F1p2 := (X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p3 := (-X(bordpos),-Y(bordpos), Z(bordpos));
+ F1p4 := (-X(bordpos),Y(bordpos), Z(bordpos));
+ NF := 1;
+ draw facepath(1);
+ counter := 1;
+ for i=1 upto X(sizevec):
+ for j=1 upto Y(sizevec):
+ for k=1 upto Z(sizevec):
+ phi := 90;
+ theta := thetamin+(i-1)*thetastp;
+ currpos := starpos+( (i-1)*X(gridvec) ,
+ (j-1)*Y(gridvec) ,
+ (k-1)*Z(gridvec) );
+ generatedirline( counter, phi, theta, long, currpos );
+ counter := incr(counter);
+ endfor;
+ endfor;
+ endfor;
+ NL := decr(counter);
+ director_invisible( true, base, false );
+endfig;
+
+end;
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/twoholes.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/twoholes.mp
new file mode 100644
index 00000000000..07cf6c31964
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/twoholes.mp
@@ -0,0 +1,31 @@
+% twoholes.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3Dplus2D;
+
+f := 1.5*(0,1.5,1);
+Spread := 100;
+
+beginfig(1);
+ numeric stagelevel, holediam, outerdiam, stagemargin;
+ numeric numberofstagesidesquares, stagesidesize;
+ numeric centercoord;
+ color centerposdisc, centerpostorus;
+ stagelevel = 0.2;
+ holediam = 0.6;
+ stagemargin = 0.2;
+ numberofstagesidesquares = 20;
+ outerdiam = holediam+4*stagelevel;
+ stagesidesize = 2*( outerdiam + stagemargin );
+ centercoord = 0.3535*outerdiam;
+ HoriZon := -stagelevel;
+ centerpostorus = ( centercoord, -centercoord, 0 );
+ centerposdisc = ( -centercoord, centercoord, HoriZon );
+ setthestage( numberofstagesidesquares, stagesidesize );
+ smoothtorus( centerpostorus, blue,
+ 0.5*holediam+stagelevel, stagelevel );
+ rigorousdisc( 0.5*holediam, true, centerposdisc,
+ 0.5*outerdiam, 1.5*stagelevel*blue );
+endfig;
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfection.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfection.mp
new file mode 100644
index 00000000000..0e95bc05451
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfection.mp
@@ -0,0 +1,59 @@
+% unperfection.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 70;
+f := (10,4,5);
+
+beginfig(1);
+ numeric i, len, polelen;
+ numeric fws, NumLines, linex, inray, outay, axray;
+ numeric wang, poleray;
+ path aro[], oneline;
+ color axe, pole, polec, aroc;
+ picture floorwall;
+ len := 0.6;
+ wang := 60;
+ axe := (0,cosd(90-wang),sind(90-wang));
+ pole := (0,1,0);
+ fws := 4;
+ polelen := 0.8*fws;
+ outay := 0.45*fws;
+ inray := 0.7*outay;
+ poleray := 0.07*inray;
+ NumLines := 30;
+ for i=0 upto NumLines:
+ linex := fws*(i/NumLines-0.5);
+ oneline := rp((linex,0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,0.5*fws));
+ draw oneline withcolor (0.7*background);
+ endfor;
+ aroc := outay*(0,cosd(wang),sind(wang))-0.5*(0,fws,fws);
+ polec := (0,(outay-inray)*cosd(wang)-fws/2,
+ (outay+inray)*sind(wang)-poleray-fws/2);
+ aro1 := goodcirclepath( aroc, axe, inray );
+ aro2 := goodcirclepath( aroc+len*axe, axe, inray );
+ aro3 := buildcycle( aro1, aro2 );
+ floorwall := currentpicture;
+ clip floorwall to aro3;
+ aro4 := spatialhalfcircle( aroc+len*axe, axe, inray, false );
+ aro5 := spatialhalfcircle( aroc+len*axe, axe, outay, false );
+ aro6 := reverse aro5;
+ aro7 := aro4--aro6--cycle;
+ fill aro7 withcolor (0.6*background);
+ rigorousdisc( 0, true, aroc, inray, axe*len );
+ draw floorwall;
+ draw aro3;
+ rigorousdisc( 0, true, polec, poleray, pole*polelen );
+ aro8 := spatialhalfcircle( aroc+len*axe, axe, inray, true );
+ aro9 := spatialhalfcircle( aroc+len*axe, axe, outay, true );
+ aro10 := reverse aro9;
+ aro11 := aro8--aro10--cycle;
+ fill aro11 withcolor (0.6*background);
+ rigorousdisc( 0, false, aroc, outay, axe*len );
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfectionremoved.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfectionremoved.mp
new file mode 100644
index 00000000000..1829b9e7787
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/unperfectionremoved.mp
@@ -0,0 +1,34 @@
+% unperfectionremoved.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 70;
+f := (13,4,3);
+
+beginfig(1);
+ numeric i, len;
+ numeric fws, NumLines, linex, inray, outay, axray;
+ numeric wang;
+ path oneline;
+ color axe, aroc;
+ len := 0.6;
+ wang := 60;
+ axe := (0,cosd(90-wang),sind(90-wang));
+ fws := 4;
+ outay := 0.45*fws;
+ inray := 0.7*outay;
+ NumLines := 30;
+ for i=0 upto NumLines:
+ linex := fws*(i/NumLines-0.5);
+ oneline := rp((linex,0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,-0.5*fws))
+ --rp((linex,-0.5*fws,0.5*fws));
+ draw oneline withcolor (0.7*background);
+ endfor;
+ aroc := outay*(0,cosd(wang),sind(wang))-0.5*(0,fws,fws);
+ rigorousdisc( inray, true, aroc, outay, axe*len );
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/vanallenbelt.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/vanallenbelt.mp
new file mode 100644
index 00000000000..83c636ab380
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/vanallenbelt.mp
@@ -0,0 +1,51 @@
+% vanallenbelt.mp
+% L. Nobre G.
+% 2004
+
+% input featpost3Dplus2D;
+
+def magnfield( expr pos ) =
+ begingroup
+ save dist, anga, angb, angp, bv, bh, br, bx, by, bz, fin;
+ numeric dist, anga, angb, bv, bh, br, bx, by, bz;
+ pair angp;
+ color fin;
+ dist = conorm( pos );
+ angp = getanglepair( pos );
+ anga = xpart( angp );
+ angb = ypart( angp );
+ bh = 0.5*cosd( angb )/dist**3;
+ bv = sind( angb )/dist**3;
+ br = bv*cosd( angb ) - bh*sind( angb );
+ bz = bv*sind( angb ) + bh*cosd( angb );
+ bx = br*cosd( anga );
+ by = br*sind( anga );
+ fin = ( bx, by, bz );
+ ( 25*fin )
+ endgroup
+enddef;
+
+def pmf( expr pos ) =
+ (2*red/(((greenpart pos) ++ (bluepart pos))**2))
+enddef;
+
+beginfig(1);
+ color vel;
+ vel = 1.1*(-0.25,0.0,0.1);
+ cartaxes(1,1,1);
+ draw magnetictrajectorypath(200, red, vel, 0.22, magnfield );
+% draw magnetictrajectorypath(400, red,-vel, 0.22, magnfield );
+endfig;
+
+beginfig(2);
+ f := 2*red;
+ Spread := 200;
+ numeric ang;
+ color vel;
+ ang = 145;
+ vel = 0.8*( 0, cosd( ang ), sind( ang ) );
+ draw magnetictrajectorypath(200, green, vel, 0.1, pmf );
+ drawarrow reverse (rp(blue)--rp(black)--rp(green));
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/verygoodcone.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/verygoodcone.mp
new file mode 100644
index 00000000000..8ce59552a21
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/verygoodcone.mp
@@ -0,0 +1,28 @@
+% verygoodcone.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+beginfig(1);
+ numeric radiusin, fac, i, numc, stepang, xcoor, ycoor, radc;
+
+ f := (5,0.3,1.5);
+ Spread := 70;
+ radiusin = 0.3;
+ numc = 9;
+ fac = 3;
+ stepang = 360/numc;
+ radc = (fac-1)*radiusin*sind(0.5*stepang);
+
+ for i=0 step stepang until 180:
+ xcoor := -radiusin*cosd(i);
+ ycoor := radiusin*sind(i);
+verygoodcone(true,fac*(xcoor,-ycoor,0),(-xcoor,ycoor,0),radc,(xcoor,-ycoor,0));
+verygoodcone(true,fac*(xcoor,ycoor,0),-(xcoor,ycoor,0),radc,(xcoor,ycoor,0));
+ endfor;
+endfig;
+
+end;
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/xraycamera.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/xraycamera.mp
new file mode 100644
index 00000000000..b3f6e51c6de
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/xraycamera.mp
@@ -0,0 +1,117 @@
+% xraycamera.mp
+% L. Nobre G.
+% IYP (2005)
+
+%input featpost3Dplus2D;
+
+verbatimtex
+\documentclass{article}
+\usepackage{beton}
+\usepackage{concmath}
+\usepackage{ccfonts}
+\begin{document}
+etex
+
+beginfig(1);
+ f := (10,7,8);
+ Spread := 45;
+ numeric w, h, l, d, t, tr, tl, ma, mb, we, ar;
+ w = 3;
+ h = 2;
+ l = 4;
+ d = 0.75;
+ t = 1.2;
+ tr= 0.15;
+ tl= 0.25;
+ ma= 0.3;
+ mb= 0.2;
+ ar= 2;
+ we= 0.6*(h-t);
+ pen thin, thick, aver;
+ thin = pencircle scaled 0.5pt;
+ thick= pencircle scaled 1.5pt;
+ aver = pencircle scaled 1.0pt;
+ ahlength:=2mm;
+ ahangle:=30;
+ color p[];
+ p1 = (0,w/2,-ma-mb);
+ p2 = (0,w/2,-ma);
+ p3 = (0,w/2,0);
+ p4 = (0,w/2,h);
+ p5 = (0,-w/2,-ma-mb);
+ p6 = (0,-w/2,-ma);
+ p7 = (0,-w/2,0);
+ p8 = (0,-w/2,h);
+ p9 = (0,-w/2-ma-mb,0);
+ p10= (0,-w/2-ma,0);
+ p11= (0,-w/2-ma-mb,h);
+ p12= (0,-w/2-ma,h);
+ p13= (-l,-w/2-ma-mb,h);
+ p14= (-l,-w/2-ma,h);
+ p15= (-l,-w/2,h);
+ p16= (-l,-w/2,0);
+ p17= (-l,w/2,0);
+ p18= (-l,w/2,h);
+ p19= (-l+d,0,0);
+ p20= (-l+d,0,t);
+ p21= (-l-ma,0,t);
+ p22= (-l-ma-mb,0,t);
+ p23= (-l-ma,0,0);
+ p24= (-l-ma-mb,0,0);
+ p25= (-l+d,w/2+ma,0);
+ p26= (-l+d,w/2+ma+mb,0);
+ p27= (-l,w/2+ma,0);
+ p28= (-l,w/2+ma+mb,0);
+ p29= 0.5[p2,p6];
+ p30= 0.5[p10,p12];
+ p31= 0.5[p12,p14];
+ p32= 0.5[p21,p23];
+ p33= 0.5[p25,p27];
+ p34= (0,0,h);
+ p35= (0,0,2*t-h);
+ drawoptions( withpen thick );
+ draw rp(p8)--rp(p4)--rp(p3)--rp(p7)--rp(p8)--rp(p15)--rp(p16);
+ draw rp(p15)--rp(p18)--rp(p17)--rp(p3)--rp(p4)--rp(p18);
+ path pat[];
+ pat1 = rp(p8)--rp(p4);
+ pat2 = rp(p7)--rp(p16)--rp(p17);
+ pat3 = rp(p4)--rp(p18);
+ pat4 = pat2 cutbefore pat1 cutafter pat3;
+ draw pat4;
+ drawoptions( withpen thin );
+ drawdblarrow rp(p2)--rp(p6);
+ drawdblarrow rp(p10)--rp(p12);
+ drawdblarrow rp(p14)--rp(p12);
+ drawdblarrow rp(p21)--rp(p23);
+ drawdblarrow rp(p25)--rp(p27);
+ draw rp(p1)--rp(p3);
+ draw rp(p5)--rp(p7);
+ draw rp(p7)--rp(p9);
+ draw rp(p8)--rp(p11);
+ draw rp(p13)--rp(p15);
+ draw rp(p20)--rp(p22);
+ draw rp(p19)--rp(p24);
+ draw rp(p17)--rp(p28);
+ draw rp(p19)--rp(p26);
+ drawoptions( withpen thick );
+ rigorousdisc( 0, true, p20, tr, (-tl,0,0) );
+ draw rp(p19)--rp(p20) withpen thin;
+ drawoptions( withpen aver );
+ draw rp(p34)--rp(p20)--rp(p35);
+ fill ellipticpath( (0,0,t), (h-t)*blue, we*green ) withcolor 0.5white;
+ draw pat2 dashed evenly withpen thick;
+ draw rp(p20)--rp(p35)--rp(p34) dashed evenly;
+ draw rp((0,0,t)-we*green)--rp((0,0,t)+we*green) dashed evenly;
+ angline( p34, p35, p20, ar, btex $\alpha$ etex, llft );
+ label.bot(btex $w$ etex, rp(p29));
+ label.lft(btex $h$ etex, rp(p30));
+ label.top(btex $l$ etex, rp(p31));
+ label.lft(btex $t$ etex, rp(p32));
+ label.rt(btex $d$ etex, rp(p33));
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/cone.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/cone.mp
new file mode 100644
index 00000000000..883f01ff625
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/cone.mp
@@ -0,0 +1,37 @@
+% cone.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ f := (5,3,4);
+ numeric labscal;
+ picture labr, labc, laba, labv;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ laba = btex $\vec{A}$ etex scaled labscal;
+ labr = btex $R$ etex scaled labscal;
+ labv = btex $\vec{v}$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ verygoodcone(true,black,blue,0.8,blue+green);
+ drawoptions( withpen pencircle scaled 1.3pt );
+ draw rp(black)--rp(green)--rp(blue+green) dashed evenly;
+ drawdblarrow rp(black)--rp(0.8green);
+ label.urt( labr, rp(0.4green) );
+ drawarrow rp(black)--rp(0.45*blue);
+ label.rt( laba, rp((0,0,0.25)) );
+ dotlabel.llft( labc, rp(black) );
+ dotlabel.rt( labv, rp(blue+green) );
+
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/ellipticprism.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/ellipticprism.mp
new file mode 100644
index 00000000000..6106c980adf
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/ellipticprism.mp
@@ -0,0 +1,39 @@
+% ellipticprism.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ f := (5,3,4);
+ numeric labscal;
+ picture labsa, labba, labsb, labd, labc;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ labsa = btex $\vec{S}_1$ etex scaled labscal;
+ labsb = btex $\vec{S}_2$ etex scaled labscal;
+ labba = btex $\vec{B}_1$ etex scaled labscal;
+ labd= btex $D$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ whatisthis( black, 0.5red, green, 0.85, 0.8 );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ drawdblarrow rp(black)--rp(0.85blue);
+ label.rt( labd, rp(0.4blue) );
+ drawarrow rp(black)--rp(0.5red);
+ label.ulft( labsa, rp(0.25red) );
+ drawarrow rp(black)--rp(green);
+ label.top( labba, rp((0,0.5,0)) );
+ drawarrow rp(0.85blue)--rp(0.8*0.5*red+0.85blue);
+ label.ulft( labsb, rp(0.2red+0.85blue) );
+ dotlabel.bot( labc, rp(black) );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/intersection2D.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/intersection2D.mp
new file mode 100644
index 00000000000..d482fde6ed0
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/intersection2D.mp
@@ -0,0 +1,46 @@
+% intersection2D.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ numeric u;
+ pair Aa, Ab, Ba, Bb, Un, Kn, Or;
+ pen dotpen, penpen;
+ color knowncolour, notknowncol;
+ picture kn, un;
+ u = 4mm;
+ Aa = (0,8u);
+ Ab = (15u,0);
+ Ba = (12u,0.5u);
+ Bb = (13u,6u);
+ Kn = (0,1u);
+ Or = (1.5u,1.5u);
+ dotpen = pencircle scaled 0.5u;
+ penpen = pencircle scaled 0.2u;
+ knowncolour = blue;
+ notknowncol = red;
+ kn = btex given etex;
+ un = btex unknown etex;
+ draw Aa--Ab;
+ draw Ba--Bb;
+ drawoptions( withpen dotpen withcolor knowncolour );
+ draw Aa;
+ draw Ab;
+ draw Ba;
+ draw Bb;
+ draw Kn+Or;
+ drawoptions( withpen dotpen withcolor notknowncol );
+ Un = whatever[Aa,Ab];
+ Un = whatever[Ba,Bb];
+ draw Un;
+ draw Or;
+ drawoptions();
+ label.rt( kn, Kn+Or );
+ label.rt( un, Or );
+endfig;
+
+verbatimtex }\end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/kindofcube.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/kindofcube.mp
new file mode 100644
index 00000000000..c29d727bd61
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/kindofcube.mp
@@ -0,0 +1,57 @@
+% kindofcube.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ f := (4,1.2,0.5);
+ Spread := 120;
+ numeric lena, lenb, lenc, aa, ab, ac, angray, micr, labscal;
+ pair zeror;
+ color axa, axb, axc, returnedcorner, dummyc, auxx, auxy;
+ lena=0.3;
+ lenb=0.6;
+ lenc=0.9;
+ aa=130;
+ ab=32;
+ ac=67;
+ labscal=1.6;
+ angray=0.85;
+ micr=0.01;
+ zeror=rp(black);
+ cartaxes(1.2,1,1.15);
+ axa = ( cosd(aa), sind(aa), 0 );
+ axb = axa*cosd(ab)+blue*sind(ab);
+ auxx= ( cosd(aa+90), sind(aa+90), 0);
+ auxy = ncrossprod( axb, auxx );
+ axc = auxx*cosd(ac)+auxy*sind(ac);
+ draw zeror--rp(axa);
+ draw zeror--rp(axb);
+ draw zeror--rp(-0.6*axa);
+ draw zeror--rp(axc);
+ draw zeror--rp(auxx);
+ label.rt( btex $a$ etex scaled labscal, rp(axa) );
+ label.rt( btex $b$ etex scaled labscal, rp(axb) );
+ label.lft( btex $c$ etex scaled labscal, rp(auxx) );
+ label.lft( btex $d$ etex scaled labscal, rp(axc) );
+ angline( axa,red,black,angray,btex $\alpha_1$ etex scaled labscal,bot );
+ angline( axb,axa,black,angray,btex $\alpha_2$ etex scaled labscal,rt );
+ angline( axc,auxx,black,angray,btex $\alpha_3$ etex scaled labscal,lft );
+ squareangline( -axa,auxx,black,0.2);
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ kindofcube( false, true, black, aa, ab, ac, lena, lenb, lenc );
+ drawoptions();
+ dotlabel.bot( btex $\vec{o}$ etex scaled labscal, zeror );
+ label.bot( btex $l_1$ etex scaled labscal, rp(lena*axb) );
+ label.bot( btex $l_2$ etex scaled labscal, rp(0.5*lenb*axc) );
+ label.ulft( btex $l_3$ etex scaled labscal,rp(0.5*lenc*ncrossprod(axb,axc)));
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/newexperimental.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/newexperimental.mp
new file mode 100644
index 00000000000..bfacd32ae1f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/newexperimental.mp
@@ -0,0 +1,157 @@
+% newexperimental.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3D;
+%input featpost2D;
+
+%verbatimtex
+%\documentclass{article}
+%\usepackage{beton}
+%\usepackage{concmath}
+%\usepackage{ccfonts}
+%\begin{document}
+%etex
+
+verbatimtex
+\documentclass{article}
+\usepackage{palatino}
+\begin{document}
+etex
+
+f := (4.5,-6,5);
+%f := (-4.5,-6,5);
+
+beginfig(1);
+ numeric len[], ray[];
+ color axe[], pos[], fix[], lab[];
+ color reflabpos, reflabpoi, lincolor;
+ picture txt[], dashpatt;
+ numeric inclang, aberang, sampang, stepang;
+ numeric squside, sqlevel, ul, outermagpos;
+ numeric innerray, polesep, fracone, fracsam;
+ numeric labelscale;
+ path tmpath, aupath, copath;
+
+ pickup pencircle scaled 1.2pt;
+ dashpatt = evenly scaled 3;
+ inclang = 150;
+ aberang = 17;
+ sampang = 30;
+ stepang = 20;
+ ul = 0.1;
+ labelscale = 5;
+ outermagpos = 30ul;
+ squside = outermagpos;
+ sqlevel = -20ul;
+ polesep = 15ul;
+ fracone = 0.33;
+ fracsam = 0.86;
+ ray1 = 10ul;
+ ray2 = 6ul;
+ ray3 = 8ul;
+ ray4 = 1.5ul;
+ ray5 = 4ul;
+ ray6 = 3ul;
+ ray7 = 3.5ul;
+ ray8 = 2ul;
+ len3 = 7ul;
+ len4 = 20ul;
+ len5 = 3ul;
+ len7 = 3.5ul;
+ len8 = 7ul;
+ lincolor = 0.5background;
+
+ reflabpos = ( -squside, 0, -sqlevel );
+ reflabpoi = ( -squside, squside, -sqlevel );
+ V1 := (squside,squside,-sqlevel);
+ V2 := (-squside,squside,-sqlevel);
+ V3 := (-squside,-squside,-sqlevel);
+ V4 := (squside,-squside,-sqlevel);
+% makeface1(1,2,3,4);
+% draw_all_test( false );
+
+ len1 = (1-fracone)*(outermagpos-ray5-polesep);
+ pos1 = (-outermagpos,0,0);
+ len2 = fracone*(outermagpos-ray5-polesep);
+ pos2 = (len1-outermagpos,0,0);
+ lab2 = reflabpos;
+ txt2 = thelabel.top( btex magnet etex scaled labelscale, rp( lab2 ) );
+ fix2 = (-outermagpos+0.5len1,0,ray1);
+ axe3 = ( 0, cosd( inclang ), sind( inclang ) );
+ pos3 = -( len3 + len4 + len5 )*axe3;
+ lab3 = (1-fracone)*reflabpoi+fracone*V1;
+ txt3 = thelabel.rt( btex rotor etex scaled labelscale, rp( lab3 ) );
+ axe4 = axe3;
+ pos4 = -( len4 + len5 )*axe4;
+ fix3 = pos4+fracsam*ray3*(0,cosd( inclang -90 ),sind( inclang -90 ));
+ axe5 = axe3;
+ pos5 = -( len5 )*axe5;
+ lab5 = (1-fracone)*reflabpoi+fracone*V2;
+ txt5 = thelabel.rt( btex sample etex scaled labelscale, rp(lab5) );
+ fix5 = fracsam*ray5*(0,cosd( inclang -90 ),sind( inclang -90 ));
+
+ V5 := fracsam*ray5*( sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ V6 := fracsam*ray5*( -sind( sampang ),
+ cosd( sampang )*cosd( inclang -90 ),
+ cosd( sampang )*sind( inclang -90 ) );
+ V8 := fracsam*ray5*( sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ V7 := fracsam*ray5*( -sind( sampang ),
+ -cosd( sampang )*cosd( inclang -90 ),
+ -cosd( sampang )*sind( inclang -90 ) );
+ axe6 = ( 0, cosd( inclang+aberang ), sind( inclang+aberang ) );
+ pos6 = ray1*axe6;
+ len6 = len4;
+ axe7 = ( 0, cosd( inclang-aberang ), sind( inclang-aberang ) );
+ pos7 = ( ray1 + 0.5len6 )*axe7;
+ lab6 = fracone*reflabpos+(1-fracone)*V3;
+ txt6=thelabel.lft(btex camera etex scaled labelscale,rp(lab6));
+ fix6 = pos6+len6*axe6;
+ pos8 = pos7+len7*axe7;
+ axe8 = axe7;
+ lab8 = (1-fracone)*reflabpos+fracone*V3;
+ txt8 = thelabel.lft( btex lamp etex scaled labelscale, rp( lab8 ) );
+ fix8 = pos8+len8*axe8;
+ len9 = len2;
+ pos9 = (ray5+polesep,0,0);
+ ray9 = ray2;
+ ray10 = ray1;
+ pos10 = pos9+len9*(1,0,0);
+ len10 = len1;
+
+ getready( "rigorousdisc( 0, true, pos1, ray1, len1*(1,0,0) )", pos1 );
+ getready( "whatisthis(pos2,ray1*green,ray1*blue,conorm((-ray5-polesep,0,0)-pos2),ray2/ray1)", pos2 );
+ getready( "rigorousdisc( 0, true, pos3, ray3, len3*axe3 )", pos3 );
+ getready( "rigorousdisc( 0, true, pos4, ray4, len4*axe4 )", pos4 );
+ getready( "rigorousdisc( 0, true, pos5, ray5, len5*axe5 )", pos5 );
+ getready( "draw rp(V5)--rp(V6)--rp(V7)--rp(V8)--cycle", black );
+ getready( "draw rp(pos6)--rp((0,0,0))--rp(pos7) dashed dashpatt",0.5*pos6);
+ getready( "rigorousdisc( 0, true, pos6, ray6, len6*axe6 )", pos6 );
+ getready( "whatisthis(pos7,ray7*red,-ray7*ncrossprod(red,axe7),conorm(pos8-pos7),ray8/ray7)", pos7 );
+ getready( "rigorousdisc( 0, true, pos8, ray8, len8*axe8 );", pos8 );
+ getready( "whatisthis(pos9,ray9*green,ray9*blue,conorm(pos10-pos9),ray10/ray9)", pos9 );
+ getready( "rigorousdisc( 0, true, pos10, ray10, len10*(1,0,0) )", pos10 );
+ doitnow;
+ draw llcorner txt2--lrcorner txt2--rp(fix2) withcolor lincolor;
+ draw lrcorner txt3--llcorner txt3--rp(fix3) withcolor lincolor;
+ draw lrcorner txt5--llcorner txt5--rp(fix5) withcolor lincolor;
+ draw llcorner txt6--lrcorner txt6--rp(fix6) withcolor lincolor;
+ draw llcorner txt8--lrcorner txt8--rp(fix8) withcolor lincolor;
+ draw txt2;
+ draw txt3;
+ draw txt5;
+ draw txt6;
+ draw txt8;
+
+ produce_auto_scale;
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/perspec.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/perspec.mp
new file mode 100644
index 00000000000..09efea9ab2f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/perspec.mp
@@ -0,0 +1,77 @@
+% perspec.mp
+% L. Nobre G.
+% 2004
+
+%input featpost3D;
+%input featpost2D;
+
+% bash: export TEX=latex
+% tcsh: setenv TEX latex
+
+f := (4,2,2.5);
+Spread := 45;
+
+verbatimtex \documentclass{article} \begin{document} etex
+
+color psdf, psdu, psdv, rll, rlr, rur, rul, pll, plr, pur, pul;
+color pc;
+numeric projecplanesize, sizefraction, positfraction, aspectratio, rectsize;
+pen realpen, lightpen, projpen, dotpen;
+path projecplanepath, realpath;
+psdf = 3.1*(0,1,0.37);
+projecplanesize = 1.7;
+sizefraction = 0.19;
+positfraction = 0.65;
+aspectratio = 1.0;
+rectsize = 0.15;
+realpen = pencircle scaled 2.6pt;
+lightpen = pencircle scaled 0.55pt;
+projpen = pencircle scaled 1.8pt;
+dotpen = pencircle scaled 3.8pt;
+psdv = N( (-Y(psdf), X(psdf), 0) );
+psdu = ncrossprod( psdf, psdv );
+pll = projecplanesize*(-aspectratio*psdv-psdu);
+plr = projecplanesize*(+aspectratio*psdv-psdu);
+pur = projecplanesize*(+aspectratio*psdv+psdu);
+pul = projecplanesize*(-aspectratio*psdv+psdu);
+projecplanepath = rp(pll)--rp(plr)--rp(pur)--rp(pul)--cycle;
+pc = positfraction*psdf;
+rll = pc+sizefraction*projecplanesize*(-psdv-psdu);
+rlr = pc+sizefraction*projecplanesize*(+psdv-psdu);
+rur = pc+sizefraction*projecplanesize*(+psdv+psdu);
+rul = pc+sizefraction*projecplanesize*(-psdv+psdu);
+realpath = rp(rll)--rp(rlr)--rp(rur)--rp(rul)--cycle;
+
+beginfig(1);
+ draw projecplanepath withpen realpen;
+ draw realpath withpen realpen;
+ draw rp(psdf) withpen lightpen;
+ drawoptions( withpen lightpen );
+ squareangline( psdf, psdv, black, rectsize );
+ squareangline( psdf, psdu, black, rectsize );
+ drawoptions();
+ pair prll, prlr, prur, prul;
+ LightSource:=psdf;
+ prll = rp(projectpoint(black,rll));
+ prlr = rp(projectpoint(black,rlr));
+ prur = rp(projectpoint(black,rur));
+ prul = rp(projectpoint(black,rul));
+ path projpath;
+ projpath = prll--prlr--prur--prul--cycle;
+ draw projpath withpen projpen;
+ draw prll--rp(psdf) withpen lightpen;
+ draw prlr--rp(psdf) withpen lightpen;
+ draw prur--rp(psdf) withpen lightpen;
+ draw prul--rp(psdf) withpen lightpen;
+ draw rp(black)--rp(psdf) withpen lightpen;
+ draw rp(black) withpen dotpen;
+ draw rp(psdf) withpen dotpen;
+ label.rt( btex \texttt{f} etex, rp(psdf) );
+ label.bot( btex \texttt{viewcentr} etex, rp(black) );
+endfig;
+
+verbatimtex
+\end{document}
+etex
+
+end; \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/planintersection.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/planintersection.mp
new file mode 100644
index 00000000000..a3ab18237c4
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/planintersection.mp
@@ -0,0 +1,105 @@
+% planintersection.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ f := 0.5*(10,14,5.5);
+ color a, x, b, c, D, y, w, g, h;
+ color auxa, auxb, auxc, auxd, auxe, auxf;
+ pair appear;
+ numeric wid, hei, alfa, beta, forw, back, labscal;
+ pen thedotpen, borderpen, normalpen;
+ picture dasha, dashb, labx, laba, labb, labc, labD;
+ path outerb, innerb, apath, bpath;
+ wid = 1.5;
+ hei = 1;
+ forw = 1.5;
+ back = 1.5;
+ alfa = -10;
+ beta = -30;
+ labscal = 2.8;
+ labeloffset := 8pt;
+ ahangle := 30;
+ ahlength := 10pt;
+ a = ( 0.7*forw, 0.15*wid, 0.3*hei );
+ b = ( -0.7*back, 0.5*wid, 0.8*hei );
+ c = ( 0, 0.7*wid, 0.5*hei );
+ D = ( cosd( alfa )*cosd( beta ), sind( alfa )*cosd( beta ), sind( beta ) );
+ labx = btex $\vec{x}$ etex scaled labscal;
+ laba = btex $\vec{a}$ etex scaled labscal;
+ labb = btex $\vec{b}$ etex scaled labscal;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ labD = btex $\vec{D}$ etex scaled labscal;
+ thedotpen = pencircle scaled 4pt;
+ borderpen = pencircle scaled 2pt;
+ normalpen = pencircle scaled 1.5pt;
+ dasha = evenly scaled 2;
+% dashb = dashpattern( on 7pt off 5pt on 7pt );
+ dashb = withdots;
+ apath = rp((X(a),Y(a),0))--rp(a)--rp((X(a),0,Z(a)));
+ bpath = rp((X(b),Y(b),0))--rp(b)--rp((X(b),0,Z(b)));
+ auxa = ( forw, 0, 0 );
+ auxb = ( forw, 0, hei );
+ auxc = ( -back, 0, hei );
+ auxd = ( -back, 0, 0 );
+ auxe = ( -back, wid, 0 );
+ auxf = ( forw, wid, 0 );
+ outerb = rp(auxa)--rp(auxb)--rp(auxc)--rp(auxd)--rp(auxe)--rp(auxf)--cycle;
+ draw outerb withpen borderpen;
+ draw rp(auxa)--rp(auxd) withpen borderpen;
+
+ draw bpath dashed dasha withpen normalpen;
+ draw rp(b) withpen thedotpen;
+ label.top( labb, rp(b) );
+
+ draw rp(a)--rp(b) withpen normalpen;
+
+ cdotprod( y-c, D ) = 0;
+ cdotprod( y-black, green ) = 0;
+ cdotprod( y-black, blue ) = 0;
+
+ cdotprod( w-c, D ) = 0;
+ cdotprod( w-black, green ) = 0;
+ cdotprod( w-hei*blue, blue ) = 0;
+
+ cdotprod( g-c, D ) = 0;
+ cdotprod( g-wid*green, green ) = 0;
+ cdotprod( g-hei*blue, blue ) = 0;
+
+ cdotprod( h-c, D ) = 0;
+ cdotprod( h-wid*green, green ) = 0;
+ cdotprod( h-black, blue ) = 0;
+
+ innerb = rp(y)--rp(w)--rp(g)--rp(h)--cycle;
+ unfill innerb;
+ draw innerb withpen borderpen;
+
+ draw apath dashed dasha withpen normalpen;
+ draw rp(a) withpen thedotpen;
+ label.top( laba, rp(a) );
+
+ x = whatever[a,b];
+ cdotprod( x-c, D ) = 0;
+ draw rp(x) withpen thedotpen;
+ label.top( labx, rp(x) );
+
+ draw rp(a)--rp(x) withpen normalpen;
+ draw rp(x)--rp(b) withpen normalpen dashed dashb;
+
+ draw rp(c) withpen thedotpen;
+ drawarrow rp(c)--rp(c+0.7*D) withpen borderpen;
+ label.top( labc, rp(c) );
+
+ label.bot( labD, rp(c+0.5*D) );
+
+ draw rp(x)--rp(c) dashed dasha withpen normalpen;
+ drawoptions( withpen normalpen );
+ squareangline( x, c+D, c, 0.08*wid );
+
+endfig;
+
+verbatimtex }\end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/revolvers.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/revolvers.mp
new file mode 100644
index 00000000000..41fd7a9c4e2
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/revolvers.mp
@@ -0,0 +1,112 @@
+% revolvers.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+def posang( expr Angul ) =
+ rp( green*cosd( Angul ) + blue*sind( Angul ) )
+enddef;
+
+beginfig(1);
+ f := (3,5,4);
+ numeric labscal;
+ picture labr, labc, laba, labum, labdo, labtr, labqu, labci;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ laba = btex $\vec{A}$ etex scaled labscal;
+ labr = btex $R$ etex scaled labscal;
+ labum= btex 1 etex scaled labscal;
+ labdo= btex 2 etex scaled labscal;
+ labtr= btex 3 etex scaled labscal;
+ labqu= btex 4 etex scaled labscal;
+ labci= btex 5 etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ tropicalglobe( 5, black, 1, blue );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ drawdblarrow rp(black)--rp(red);
+ label.top( labr, rp((0.5,0,0)) );
+ drawarrow rp(black)--rp(blue);
+ label.rt( laba, rp((0,0,0.5)) );
+ dotlabel.lrt( labc, rp(black) );
+ dotlabel.rt( labum, posang(-72) );
+ dotlabel.top( labdo, posang(-36) );
+ dotlabel.top( labtr, posang(0) );
+ dotlabel.top( labqu, posang(36) );
+ dotlabel.top( labci, posang(72) );
+endfig;
+
+beginfig(2);
+ f := (3,5,5.7);
+ numeric labscal;
+ picture labri, labc, laba, labro;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ laba = btex $\vec{A}$ etex scaled labscal;
+ labri= btex $R_i$ etex scaled labscal;
+ labro= btex $R_o$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ rigorousdisc( 0.5, true, black, 1, 0.85*blue );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ drawdblarrow rp(black)--rp(red);
+ label.lrt( labro, rp(0.5*red) );
+ drawdblarrow rp(black+0.85*blue)--rp(0.5*green+0.85*blue);
+ label.urt( labri, rp(0.25*green+0.85*blue) );
+ drawarrow rp(black)--rp(0.85*blue);
+ label.ulft( laba, rp((0,0,0.5)) );
+ dotlabel.rt( labc, rp(black) );
+endfig;
+
+beginfig(3);
+ f := (3,2.05,2.65);
+ numeric labscal, bray, sray;
+ picture labrb, labc, laba, labrs;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ bray = 0.7;
+ sray = 0.4;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ laba = btex $\vec{A}$ etex scaled labscal;
+ labrb= btex $R_b$ etex scaled labscal;
+ labrs= btex $R_s$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ smoothtorus( black, blue, bray, sray );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ draw goodcirclepath( bray*red, green, sray ) dashed evenly;
+ drawdblarrow rp(black)--rp(bray*red);
+ label.ulft( labrb, rp(0.5*bray*red) );
+ drawdblarrow rp(bray*red+sray*blue)--rp(bray*red);
+ label.llft( labrs, rp(bray*red+0.5*sray*blue) );
+ drawarrow rp(black)--rp(sray*blue);
+ label.rt( laba, rp((0,0,0.5*sray)) );
+ dotlabel.lrt( labc, rp(black) );
+endfig;
+
+beginfig(4);
+ f := (3,5,4);
+ numeric labscal;
+ picture labr, labc, laba;
+ labscal = 2;
+ ahlength := 8pt;
+ ahangle := 30;
+ labc = btex $\vec{c}$ etex scaled labscal;
+ laba = btex $\vec{A}$ etex scaled labscal;
+ labr = btex $R$ etex scaled labscal;
+ drawoptions( withpen pencircle scaled 1.7pt withcolor 0.65blue );
+ spatialhalfsfear( black, blue, 1 );
+ drawoptions( withpen pencircle scaled 1.3pt );
+ drawdblarrow rp(black)--rp(red);
+ label.ulft( labr, rp(0.5*red) );
+ drawarrow rp(black)--rp(0.4*blue);
+ label.rt( laba, rp((0,0,0.2)) );
+ dotlabel.lrt( labc, rp(black) );
+endfig;
+
+verbatimtex }\end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/tug04/tangency2D.mp b/Master/texmf-dist/doc/metapost/featpost/example/tug04/tangency2D.mp
new file mode 100644
index 00000000000..8682c43bc0d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/tug04/tangency2D.mp
@@ -0,0 +1,56 @@
+% intersection2D.mp
+% L. Nobre G.
+% 2004
+
+verbatimtex \documentclass{article}\begin{document}{\sffamily etex
+
+beginfig(1);
+ numeric u, r, d;
+ pair Aa, Ab, Ba, Bb, Ca, Cb, Da, Db, Ea, Eb, Or, Kn;
+ pen dotpen, penpen;
+ color knowncolour, notknowncol;
+ picture kn, un, rl;
+ u = 4mm;
+ Aa = (5u,4u);
+ Ab = (3u,2u);
+ Ba = (13u,5u);
+ Bb = 0.5[Aa,Ab];
+ r = abs( Aa - Ab );
+ d = abs( Aa - Ba ) +-+ r;
+ Ea = radialcross( Aa, r, Ba, d, true );
+ Eb = radialcross( Aa, r, Ba, d, false );
+ Ca = 1.4[Ba,Ea];
+ Cb = 1.15[Ea,Ba];
+ Da = 1.5[Ba,Eb];
+ Db = 1.1[Eb,Ba];
+ Kn = (0,1u);
+ Or = (10u,1u);
+ dotpen = pencircle scaled 0.5u;
+ penpen = pencircle scaled 0.2u;
+ knowncolour = blue;
+ notknowncol = red;
+ kn = btex given etex;
+ un = btex unknown etex;
+ rl = btex $R$ etex;
+ draw fullcircle scaled 2r shifted Aa;
+ draw Ca--Cb;
+ draw Da--Db dashed evenly;
+ drawarrow Aa--Ab;
+ drawoptions( withpen dotpen withcolor knowncolour );
+ draw Aa;
+ draw Ba;
+ draw Kn+Or;
+ drawoptions( withcolor knowncolour );
+ label.ulft( rl, Bb );
+ drawoptions( withpen dotpen withcolor notknowncol );
+ draw Ea;
+ draw Eb;
+ draw Or;
+ drawoptions();
+ label.rt( kn, Kn+Or );
+ label.rt( un, Or );
+endfig;
+
+verbatimtex }\end{document} etex
+
+end;