summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-10-10 22:04:00 +0000
committerKarl Berry <karl@freefriends.org>2014-10-10 22:04:00 +0000
commit2afe81e876627e6ab68d6f8999467e2559ad70b1 (patch)
tree94a7ba24efbcc65ac990ad2e2a7a4c5790fce4a8
parentca3d251e96e4ab3ac745a18d1a8ef843a8cd803a (diff)
featpost (10oct14)
git-svn-id: svn://tug.org/texlive/trunk@35346 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/MPexamples.html58
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/README21
-rwxr-xr-xMaster/texmf-dist/doc/metapost/featpost/bash/COMPILE.sh11
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/Exemplifier.pdfbin7101901 -> 7516906 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/alldefs.txt176
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/featpostbeamer.pdfbin0 -> 985121 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/featpostdocsource.tex648
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/featpostmanual.pdfbin1154377 -> 1008696 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.pdfbin191482 -> 43469 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.tex6
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.pdfbin1121474 -> 835943 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.tex7
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/BezierApprox.pdfbin0 -> 556387 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/CHANGESv1.803.txt1504
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/Zpravodaj2009-4.pdf (renamed from Master/texmf-dist/doc/metapost/featpost/doc/Zpravodaj2009-4.pdf)bin810278 -> 810278 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/jdbug.png (renamed from Master/texmf-dist/doc/metapost/featpost/doc/jdbug.png)bin9836 -> 9836 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/tb88henderson.pdfbin0 -> 258010 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/antimattermeteor.mp46
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/balllauncher.mp67
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/bananadimmer.log14
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/beautiful00.mp40
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/cinemwork.mp43
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/cylinderborders.mp50
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/dreamhouse.mp212
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/fallinthewind.mp70
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/geometricaverage.mp5
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/hexagonalgrid.mp132
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/intersectorus.mp30
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/keplernewtonfeynman.mp26
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp102
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/lowcostgreenhouse.mp71
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/milimetricpaper.mp37
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/parabolaonthestage.mp17
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/project.mp39
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/raiodoscirculos.mp41
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/revolutionparaboloid.mp167
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/rosadosventos.mp52
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/solarconcentrator.mp64
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/solardish.mp112
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/torus.mp53
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/torusexperiment.mp152
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/trebuchet.mp10
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/twoDcolision.mp59
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/twosolarpanels.mp85
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/38.1.pngbin117166 -> 107995 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/aledlogo.1.pngbin32599 -> 32753 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/aledlogo.2.pngbin9104 -> 9366 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/antimattermeteor.1.pngbin18476 -> 38549 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/avalzero.2.pngbin6715 -> 6735 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/balllauncher.0.pngbin0 -> 5812 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/balllauncher.1.pngbin5681 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/balllauncher.9.pngbin0 -> 9531 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/beautiful00.1.pngbin0 -> 11574 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/canschemes.2.pngbin11777 -> 11873 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/cinemwork.1.pngbin8334 -> 7266 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/cylinderborders.1.pngbin0 -> 10992 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/daliasensor.1.pngbin46969 -> 47189 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.1.pngbin0 -> 8143 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.2.pngbin0 -> 10178 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/electrospiral.1.pngbin9542 -> 9534 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/fallinthewind.1.pngbin35757 -> 42432 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/fis1prex.1.pngbin8788 -> 8772 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/gausslawframe.1.pngbin52890 -> 51543 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/gnupost3Dlogo.1.pngbin12832 -> 13340 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/graphexample.1.pngbin12957 -> 13301 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/hap.1.pngbin56815 -> 35227 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.1.pngbin0 -> 5833 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.2.pngbin0 -> 10413 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.3.pngbin0 -> 9597 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/iamsorrykarl.1.pngbin5492 -> 5745 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/integerbars.1.pngbin12307 -> 12290 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/intersectorus.1.pngbin0 -> 10526 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/keplernewtonfeynman.1.pngbin14642 -> 24518 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/kindofcube.1.pngbin34901 -> 34590 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/lasermachine.1.pngbin12886 -> 12862 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/ledlogo.3.pngbin9022 -> 9443 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.2.pngbin10836 -> 18635 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.3.pngbin18635 -> 10836 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.4.pngbin0 -> 20404 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/lowcostgreenhouse.1.pngbin0 -> 6665 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/magneticflux.1.pngbin25627 -> 24475 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/magneticflux.2.pngbin28305 -> 41127 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/manjusha.6.pngbin12107 -> 11485 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.1.pngbin4699 -> 5213 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.2.pngbin0 -> 2674 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nembends.1.pngbin16050 -> 16594 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nembiaxi.1.pngbin19291 -> 19951 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nemdirector.1.pngbin22693 -> 22484 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nemquira.1.pngbin12496 -> 12863 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nemquirapitch.1.pngbin11727 -> 12325 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nemsaddl.1.pngbin25771 -> 26173 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nemuniax.1.pngbin48094 -> 50005 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nsmetica.1.pngbin39802 -> 39185 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.2.pngbin10348 -> 10424 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.4.pngbin10876 -> 10932 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/photoreverse.1.pngbin8937 -> 8980 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/positivecharge.1.pngbin29487 -> 28125 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/potenciadecicloeliptico.1.pngbin5527 -> 5642 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/project.1.pngbin7247 -> 8053 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/qap.1.pngbin46708 -> 49569 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.5.pngbin6650 -> 5978 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.7.pngbin0 -> 5963 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.8.pngbin0 -> 7433 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.9.pngbin0 -> 6650 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/resistcircuit.1.pngbin5051 -> 3617 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.1.pngbin0 -> 9034 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.2.pngbin0 -> 7196 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.3.pngbin0 -> 21230 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.4.pngbin0 -> 10912 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.5.pngbin0 -> 14919 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/rigorousdiscSD.1.pngbin26652 -> 26638 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/rmnbob.1.pngbin19017 -> 18988 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/rodarolaremplaninc.1.pngbin11491 -> 9778 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/rosadosventos.1.pngbin0 -> 21520 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/sap.1.pngbin66893 -> 52753 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/simplecenterofmass.1.pngbin6380 -> 6535 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/sincityredesigned.2.pngbin8942 -> 8770 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/slingshot.1.pngbin22579 -> 22524 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/solarconcentrator.1.pngbin0 -> 16831 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/solardish.1.pngbin0 -> 12981 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/solardish.2.pngbin0 -> 19691 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/solardish.3.pngbin0 -> 19282 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/solardish.4.pngbin0 -> 12725 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/spaceinvader.2.pngbin7280 -> 7325 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/splineperspective.5.pngbin8460 -> 8993 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.1.pngbin26307 -> 25578 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.2.pngbin24816 -> 24693 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.3.pngbin20486 -> 21449 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.6.pngbin52326 -> 49945 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.7.pngbin48211 -> 48833 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.8.pngbin46369 -> 47872 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.9.pngbin54560 -> 62711 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/strength1defect.1.pngbin17704 -> 17936 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/tdarrow.1.pngbin73472 -> 73278 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/torus.3.pngbin35723 -> 35689 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.1.pngbin0 -> 11018 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.2.pngbin0 -> 9055 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/trianglecenterofmass.1.pngbin7530 -> 7947 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/trigonometry.1.pngbin6676 -> 6704 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/tuftescatter.1.pngbin27507 -> 27254 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/twoDcolision.1.pngbin0 -> 7928 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/twosolarpanels.1.pngbin0 -> 15244 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/png/xcmplaca2buraquads.1.pngbin5003 -> 5147 bytes
-rw-r--r--Master/texmf-dist/metapost/featpost/featpost3Dplus2D.mp327
144 files changed, 3818 insertions, 736 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/MPexamples.html b/Master/texmf-dist/doc/metapost/featpost/MPexamples.html
index 5247f8d8894..3a76863a7a1 100644
--- a/Master/texmf-dist/doc/metapost/featpost/MPexamples.html
+++ b/Master/texmf-dist/doc/metapost/featpost/MPexamples.html
@@ -37,11 +37,15 @@
<img align="middle" src="./png/badshreeyantra.1.png" alt=" badshreeyantra.1 ">
</P>
<P align="center"><a href="./example/balllauncher.mp"> balllauncher.mp</a>
-<img align="middle" src="./png/balllauncher.1.png" alt=" balllauncher.1 ">
+<img align="middle" src="./png/balllauncher.0.png" alt=" balllauncher.0 ">
+<img align="middle" src="./png/balllauncher.9.png" alt=" balllauncher.9 ">
</P>
<P align="center"><a href="./example/bananadimmer.mp"> bananadimmer.mp</a>
<img align="middle" src="./png/bananadimmer.1.png" alt=" bananadimmer.1 ">
</P>
+<P align="center"><a href="./example/beautiful00.mp"> beautiful00.mp</a>
+<img align="middle" src="./png/beautiful00.1.png" alt=" beautiful00.1 ">
+</P>
<P align="center"><a href="./example/bichaepolicia.mp"> bichaepolicia.mp</a>
<img align="middle" src="./png/bichaepolicia.0.png" alt=" bichaepolicia.0 ">
</P>
@@ -160,6 +164,9 @@
<P align="center"><a href="./example/cylimple.mp"> cylimple.mp</a>
<img align="middle" src="./png/cylimple.1.png" alt=" cylimple.1 ">
</P>
+<P align="center"><a href="./example/cylinderborders.mp"> cylinderborders.mp</a>
+<img align="middle" src="./png/cylinderborders.1.png" alt=" cylinderborders.1 ">
+</P>
<P align="center"><a href="./example/daliasensor.mp"> daliasensor.mp</a>
<img align="middle" src="./png/daliasensor.1.png" alt=" daliasensor.1 ">
</P>
@@ -193,6 +200,10 @@
<P align="center"><a href="./example/downloadicon.mp"> downloadicon.mp</a>
<img align="middle" src="./png/downloadicon.1.png" alt=" downloadicon.1 ">
</P>
+<P align="center"><a href="./example/dreamhouse.mp"> dreamhouse.mp</a>
+<img align="middle" src="./png/dreamhouse.1.png" alt=" dreamhouse.1 ">
+<img align="middle" src="./png/dreamhouse.2.png" alt=" dreamhouse.2 ">
+</P>
<P align="center"><a href="./example/durgayantra.mp"> durgayantra.mp</a>
<img align="middle" src="./png/durgayantra.1.png" alt=" durgayantra.1 ">
<img align="middle" src="./png/durgayantra.2.png" alt=" durgayantra.2 ">
@@ -383,6 +394,11 @@
<P align="center"><a href="./example/hexacylon.mp"> hexacylon.mp</a>
<img align="middle" src="./png/hexacylon.1.png" alt=" hexacylon.1 ">
</P>
+<P align="center"><a href="./example/hexagonalgrid.mp"> hexagonalgrid.mp</a>
+<img align="middle" src="./png/hexagonalgrid.1.png" alt=" hexagonalgrid.1 ">
+<img align="middle" src="./png/hexagonalgrid.2.png" alt=" hexagonalgrid.2 ">
+<img align="middle" src="./png/hexagonalgrid.3.png" alt=" hexagonalgrid.3 ">
+</P>
<P align="center"><a href="./example/hexagonaltrimesh.mp"> hexagonaltrimesh.mp</a>
<img align="middle" src="./png/hexagonaltrimesh.1.png" alt=" hexagonaltrimesh.1 ">
</P>
@@ -411,6 +427,9 @@
<P align="center"><a href="./example/interdigitrodes.mp"> interdigitrodes.mp</a>
<img align="middle" src="./png/interdigitrodes.1.png" alt=" interdigitrodes.1 ">
</P>
+<P align="center"><a href="./example/intersectorus.mp"> intersectorus.mp</a>
+<img align="middle" src="./png/intersectorus.1.png" alt=" intersectorus.1 ">
+</P>
<P align="center"><a href="./example/intersectprolatespheroid.mp"> intersectprolatespheroid.mp</a>
<img align="middle" src="./png/intersectprolatespheroid.1.png" alt=" intersectprolatespheroid.1 ">
</P>
@@ -480,6 +499,7 @@
<img align="middle" src="./png/lgc2refractionEdited.1.png" alt=" lgc2refractionEdited.1 ">
<img align="middle" src="./png/lgc2refractionEdited.2.png" alt=" lgc2refractionEdited.2 ">
<img align="middle" src="./png/lgc2refractionEdited.3.png" alt=" lgc2refractionEdited.3 ">
+<img align="middle" src="./png/lgc2refractionEdited.4.png" alt=" lgc2refractionEdited.4 ">
</P>
<P align="center"><a href="./example/loglogpaper.mp"> loglogpaper.mp</a>
<img align="middle" src="./png/loglogpaper.1.png" alt=" loglogpaper.1 ">
@@ -487,6 +507,9 @@
<P align="center"><a href="./example/logofontest.mp"> logofontest.mp</a>
<img align="middle" src="./png/logofontest.0.png" alt=" logofontest.0 ">
</P>
+<P align="center"><a href="./example/lowcostgreenhouse.mp"> lowcostgreenhouse.mp</a>
+<img align="middle" src="./png/lowcostgreenhouse.1.png" alt=" lowcostgreenhouse.1 ">
+</P>
<P align="center"><a href="./example/magneticflux.mp"> magneticflux.mp</a>
<img align="middle" src="./png/magneticflux.1.png" alt=" magneticflux.1 ">
<img align="middle" src="./png/magneticflux.2.png" alt=" magneticflux.2 ">
@@ -516,6 +539,7 @@
</P>
<P align="center"><a href="./example/milimetricpaper.mp"> milimetricpaper.mp</a>
<img align="middle" src="./png/milimetricpaper.1.png" alt=" milimetricpaper.1 ">
+<img align="middle" src="./png/milimetricpaper.2.png" alt=" milimetricpaper.2 ">
</P>
<P align="center"><a href="./example/mpfields.mp"> mpfields.mp</a>
<img align="middle" src="./png/mpfields.0.png" alt=" mpfields.0 ">
@@ -696,6 +720,9 @@
<img align="middle" src="./png/raiodoscirculos.4.png" alt=" raiodoscirculos.4 ">
<img align="middle" src="./png/raiodoscirculos.5.png" alt=" raiodoscirculos.5 ">
<img align="middle" src="./png/raiodoscirculos.6.png" alt=" raiodoscirculos.6 ">
+<img align="middle" src="./png/raiodoscirculos.7.png" alt=" raiodoscirculos.7 ">
+<img align="middle" src="./png/raiodoscirculos.8.png" alt=" raiodoscirculos.8 ">
+<img align="middle" src="./png/raiodoscirculos.9.png" alt=" raiodoscirculos.9 ">
</P>
<P align="center"><a href="./example/redplanet.mp"> redplanet.mp</a>
<img align="middle" src="./png/redplanet.1.png" alt=" redplanet.1 ">
@@ -714,6 +741,13 @@
<img align="middle" src="./png/revolipsoid.1.png" alt=" revolipsoid.1 ">
<img align="middle" src="./png/revolipsoid.2.png" alt=" revolipsoid.2 ">
</P>
+<P align="center"><a href="./example/revolutionparaboloid.mp"> revolutionparaboloid.mp</a>
+<img align="middle" src="./png/revolutionparaboloid.1.png" alt=" revolutionparaboloid.1 ">
+<img align="middle" src="./png/revolutionparaboloid.2.png" alt=" revolutionparaboloid.2 ">
+<img align="middle" src="./png/revolutionparaboloid.3.png" alt=" revolutionparaboloid.3 ">
+<img align="middle" src="./png/revolutionparaboloid.4.png" alt=" revolutionparaboloid.4 ">
+<img align="middle" src="./png/revolutionparaboloid.5.png" alt=" revolutionparaboloid.5 ">
+</P>
<P align="center"><a href="./example/revolvers.mp"> revolvers.mp</a>
<img align="middle" src="./png/revolvers.1.png" alt=" revolvers.1 ">
<img align="middle" src="./png/revolvers.2.png" alt=" revolvers.2 ">
@@ -753,6 +787,9 @@
<P align="center"><a href="./example/ropepatterns.mp"> ropepatterns.mp</a>
<img align="middle" src="./png/ropepatterns.1.png" alt=" ropepatterns.1 ">
</P>
+<P align="center"><a href="./example/rosadosventos.mp"> rosadosventos.mp</a>
+<img align="middle" src="./png/rosadosventos.1.png" alt=" rosadosventos.1 ">
+</P>
<P align="center"><a href="./example/rotatnlc.mp"> rotatnlc.mp</a>
<img align="middle" src="./png/rotatnlc.1.png" alt=" rotatnlc.1 ">
</P>
@@ -820,6 +857,15 @@
<P align="center"><a href="./example/sniperlogo.mp"> sniperlogo.mp</a>
<img align="middle" src="./png/sniperlogo.1.png" alt=" sniperlogo.1 ">
</P>
+<P align="center"><a href="./example/solarconcentrator.mp"> solarconcentrator.mp</a>
+<img align="middle" src="./png/solarconcentrator.1.png" alt=" solarconcentrator.1 ">
+</P>
+<P align="center"><a href="./example/solardish.mp"> solardish.mp</a>
+<img align="middle" src="./png/solardish.1.png" alt=" solardish.1 ">
+<img align="middle" src="./png/solardish.2.png" alt=" solardish.2 ">
+<img align="middle" src="./png/solardish.3.png" alt=" solardish.3 ">
+<img align="middle" src="./png/solardish.4.png" alt=" solardish.4 ">
+</P>
<P align="center"><a href="./example/some2Dvecs.mp"> some2Dvecs.mp</a>
<img align="middle" src="./png/some2Dvecs.1.png" alt=" some2Dvecs.1 ">
</P>
@@ -936,6 +982,10 @@
<P align="center"><a href="./example/toro4transit.mp"> toro4transit.mp</a>
<img align="middle" src="./png/toro4transit.1.png" alt=" toro4transit.1 ">
</P>
+<P align="center"><a href="./example/torusexperiment.mp"> torusexperiment.mp</a>
+<img align="middle" src="./png/torusexperiment.1.png" alt=" torusexperiment.1 ">
+<img align="middle" src="./png/torusexperiment.2.png" alt=" torusexperiment.2 ">
+</P>
<P align="center"><a href="./example/torus.mp"> torus.mp</a>
<img align="middle" src="./png/torus.1.png" alt=" torus.1 ">
<img align="middle" src="./png/torus.2.png" alt=" torus.2 ">
@@ -996,12 +1046,18 @@
<P align="center"><a href="./example/twocyclestogether.mp"> twocyclestogether.mp</a>
<img align="middle" src="./png/twocyclestogether.1.png" alt=" twocyclestogether.1 ">
</P>
+<P align="center"><a href="./example/twoDcolision.mp"> twoDcolision.mp</a>
+<img align="middle" src="./png/twoDcolision.1.png" alt=" twoDcolision.1 ">
+</P>
<P align="center"><a href="./example/twoholes.mp"> twoholes.mp</a>
<img align="middle" src="./png/twoholes.1.png" alt=" twoholes.1 ">
</P>
<P align="center"><a href="./example/twoplustwo.mp"> twoplustwo.mp</a>
<img align="middle" src="./png/twoplustwo.1.png" alt=" twoplustwo.1 ">
</P>
+<P align="center"><a href="./example/twosolarpanels.mp"> twosolarpanels.mp</a>
+<img align="middle" src="./png/twosolarpanels.1.png" alt=" twosolarpanels.1 ">
+</P>
<P align="center"><a href="./example/twoupcones.mp"> twoupcones.mp</a>
<img align="middle" src="./png/twoupcones.1.png" alt=" twoupcones.1 ">
</P>
diff --git a/Master/texmf-dist/doc/metapost/featpost/README b/Master/texmf-dist/doc/metapost/featpost/README
index 400e89968ba..86d1dd241d1 100644
--- a/Master/texmf-dist/doc/metapost/featpost/README
+++ b/Master/texmf-dist/doc/metapost/featpost/README
@@ -1,13 +1,16 @@
-FeatPost-0.8.7 has documentation in the "doc" directory:
- "featpostmanual.pdf" gathers all that I ever wrote about FeatPost;
- "Exemplifier.pdf" gathers a very big set of MetaPost figures.
-
-Perhaps, it may be better for you to start with plain MetaPost and (La)TeX:
- "metapostpropaganda.pdf" is a wide-range tutorial.
+Welcome to FeatPost-0.8.8!
+ The file "MPexamples.html" contains the complete collection of examples
+ as raster PNG images and links to the source code of each one.
+ That same collection of examples is also in "doc" directory in the file
+ "doc/Exemplifier.pdf" as exact postscript diagrams but without links.
+ The user manual is also in the "doc" directory: "doc/featpostmanual.pdf".
+ There a smaller presentation version: "doc/featpostbeamer.pdf".
+ A wide-range tutorial can be found in "doc/metapostpropaganda.pdf".
The "doc/metapostpropagandafiles" directory contains additional examples.
-But even if you already know that this is what you want, you may still find
-nice surprises in the "MPexamples.html" file.
+Please,
+ the first time you make a diagram with FeatPost-0.8.8, send me an e-mail
+ message with the subject "FeatPost". My address is lng@fct.unl.pt
% This is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
@@ -19,5 +22,5 @@ nice surprises in the "MPexamples.html" file.
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
-2013/JUL/30 L. Nobre G.
+2014/OCT/01 L. Nobre G.
diff --git a/Master/texmf-dist/doc/metapost/featpost/bash/COMPILE.sh b/Master/texmf-dist/doc/metapost/featpost/bash/COMPILE.sh
index d7c75b96b28..2493a954826 100755
--- a/Master/texmf-dist/doc/metapost/featpost/bash/COMPILE.sh
+++ b/Master/texmf-dist/doc/metapost/featpost/bash/COMPILE.sh
@@ -4,7 +4,8 @@ mkdir png
mkdir mps
cd example
mpost --tex=latex graphs.mp
-mv graphs.? graphs.??? ../
+mpost --tex=latex hexagonalgrid.mp
+mv graphs.? graphs.??? hexagonalgrid.? hexagonalgrid.??? ../
cd ..
echo \\documentclass[twocolumn]{article}\
\\usepackage[dvips]{epsfig}\
@@ -18,7 +19,7 @@ echo \\documentclass[twocolumn]{article}\
for a in example/*.mp
do
b=`basename $a .mp`
- mpost --tex=latex example/$b
+ mpost1.504 --tex=latex example/$b
for c in $b.?
do
echo \\vfill\
@@ -32,11 +33,11 @@ echo \\end{center}\\end{document} >> Exemplifier.tex
latex Exemplifier.tex
dvips -o Exemplifier.ps Exemplifier.dvi
ps2pdf Exemplifier.ps
-bzip2 Exemplifier.ps
+#bzip2 Exemplifier.ps
rm Exemplifier.aux
rm Exemplifier.dvi
rm Exemplifier.tex
-mv Exemplifier.ps.bz2 doc/
+#mv Exemplifier.ps.bz2 doc/
mv Exemplifier.pdf doc/
cp *.? mps/
echo "<HTML><HEAD><TITLE>MetaPost Examples</TITLE>"\
@@ -68,4 +69,4 @@ rm example/*.mpx *.mpx
cd doc
pdflatex featpostmanual.tex
pdflatex featpostmanual.tex
-
+#rm -fR ../mps
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/Exemplifier.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/Exemplifier.pdf
index f452acd0b90..e874dd8a431 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/Exemplifier.pdf
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/Exemplifier.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/alldefs.txt b/Master/texmf-dist/doc/metapost/featpost/doc/alldefs.txt
new file mode 100644
index 00000000000..d1fae3e241f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/alldefs.txt
@@ -0,0 +1,176 @@
+Part I
+very basic
+ def X(expr A) =
+ def Y(expr A) =
+ def Z(expr A) =
+ def W(expr A) =
+ def conorm(expr A) =
+ def cmyknorm(expr A) = %% This is not good when MalcomX is true
+ def makecmyk( expr A, B ) =
+ def maketrio( expr A ) =
+Vector Calculus
+ def N(expr A) =
+ def cdotprod(expr A, B) =
+ def ccrossprod(expr A, B) =
+ def ndotprod(expr A, B) =
+ def ncrossprod(expr A, B) =
+ def paircrossprod(expr A, B) =
+ def getangle(expr A, B) =
+ def getcossine( expr Center, Radius ) =
+ vardef planarrotation( expr VecX, VecY, TheAngle ) =
+ def eulerrotation( expr AngA, AngB, AngC, Vec ) =
+ def rotvecaroundanother( expr Angle, RotVec, FixVec ) =
+ def inplanarvolume( expr PointPerpA, PointPerpB, Point ) =
+ def getanglepair( expr InVec ) =
+Auxiliary
+ def ps(expr A, Thicken_Factor) =
+ def signalvertex(expr A, TF, Col) =
+ def signalshadowvertex(expr A, TF, Col) =
+ def resolvec(expr A, B) =
+ def produce_vga_border =
+ def produce_auto_scale =
+ vardef cstr( expr Cl ) =
+ vardef bstr( expr bv ) =
+Fundamental
+ def rp(expr R) =
+ def vp(expr D) =
+ def cb(expr R) =
+ def projectpoint(expr ViewCentr, R) =
+ def lineintersectplan( expr LinePoi, LineDir, PlanPoi, PlanDir ) =
+Basic Functions
+ def pathofstraightline( expr A, B ) =
+ def drawsegment( expr A, B ) =
+ def cartaxes(expr axex, axey, axez) =
+ def orthaxes(expr axex, strx, axey, stry, axez, strz ) =
+ def angline(expr A, B, Or, W, S)(suffix RelPos) =
+ def anglinen(expr A, B, Or, W, S, RelPos) =
+ def squareangline(expr A, B, Or, W) =
+ def rigorouscircle( expr CenterPos, AngulMom, Radius ) =
+ def tdarrow(expr FromPos, ToTip ) =
+ def tdcircarrow(expr CenterPos, AngulMom, Ray, StartAngle, Amplituda ) =
+ def emptyline(expr JoinP,ThickenFactor,OutCol,InCol,theN,EmptyFrac,sN)(text LinFunc) =
+ def closedline( expr ThisIsClosed, theN, ForeFrac, BackFrac )( text LinFunc ) =
+ def twocyclestogether( expr CycleA, CycleB ) =
+ def ellipticpath(expr CenterPos, OneAxe, OtherAxe ) =
+ def ellipticshadowpath(expr CenterPos, OneAxe, OtherAxe ) =
+ def labelinspace(expr KeepRatio,RefPoi,BaseVec,UpVec)(text SomeString) =
+ def closedpathinspace( expr SomeTDPath, NDivide )( text ConverterFunc ) =
+Standard Objects
+ def goodcirclepath(expr CenterPos, AngulMom, Radius ) =
+ def circleshadowpath(expr CenterPos, AngulMom, Radius ) =
+ def head_on_circle(expr Pos, Radius ) =
+ def spatialhalfcircle(expr Center, AngulMom, Radius, ItsTheNearest ) =
+ def rigorousdisc(expr InRay, FullFill, BaseCenter, Radius, LenVec) =
+ def rigorouscone(expr UsualForm,CenterPos,AngulMom,Radius,VertexPos) =
+ def verygoodcone(expr BackDash,CenterPos,AngulMom,Radius,VertexPos) =
+ def rigorousfearpath(expr Center, Radius ) =
+ def rigorousfearshadowpath(expr Center, Radius ) =
+ def tropicalglobe( expr NumLats, TheCenter, Radius, AngulMom ) =
+ def whatisthis(expr CenterPos,OneAxe,OtherAxe,CentersDist,TheFactor) =
+ def spheroidshadow( expr CentrPoi, NorthPoleVec, Ray ) =
+ def spheroid( expr CentrPoi, NorthPoleVec, Ray ) =
+ def ellipsoid( expr Centr, AxOne, AxTwo, AxThr ) =
+ def ellipsoidshadow( expr Centr, AxOne, AxTwo, AxThr ) =
+ def revolparab( expr BaseCenter, ParabTip, BaseRay ) =
+ def fakehole( expr CenterPos, LenVec, Radius ) =
+ def kindofcube(expr WithDash, IsVertex, RefP, AngA, AngB, AngC, LenA, LenB, LenC ) =
+ def setthestage( expr NumberOfSideSquares, SideSize ) =
+ def setthearena( expr NumberOfDiameterCircles, ArenaDiameter ) =
+ def spatialhalfsfear(expr Center, AngulMom, Radius ) =
+Toroidal Stuff
+ def smoothtorus( expr Tcenter, Tmoment, Bray, Sray ) =
+ def torushadow( expr Tcenter, Tmoment, Bray, Sray ) =
+ def quartertorus( expr Tcenter, Tstart, Tfinis, Sray ) =
+ def pointinsidetorus( expr Point, Tcenter, Tmoment, Bray, Sray ) =
+ def pointrelativetotorus( expr Point, Tcenter, Tmoment, Bray, Sray ) =
+ def intersectorus( expr Tcenter, Tmoment, Bray, Sray, LinePoi, LineDir ) =
+Non-standard objects
+ def positivecharge( expr InFactPositive, Center, BallRay ) =
+ def simplecar(expr RefP, AngCol, LenCol, FronWheelCol, RearWheelCol ) =
+Differential Equations
+ def fieldlinestep( expr Spos, Step )( text VecFunc ) =
+ def fieldlinepath( expr Numb, Spos, Step )( text VecFunc ) =
+ def trajectorypath( expr Numb, Spos, Svel, Step )( text VecFunc ) =
+ def dragtrajectorypath( expr Spos, Svel, Step )( text VecFunc ) =
+ def magnetictrajectorypath( expr Numb, Spos, Svel, Step )( text VecFunc ) =
+Part II
+Advanced 3D-Object Definition Functions
+ vardef makeline@#( text vertices ) =
+ vardef makeface@#( text vertices ) =
+ vardef getready( expr commstr, refpoi ) =
+ def flipvector(expr A, B) =
+ def facevector(expr A, B, C) =
+ def masscenter(expr Nsides)(suffix Coords) =
+ def covervector(expr A, B, MassCenter) =
+ def themarkisinview(expr Mark, OwnFace) =
+ def maycrossviewplan(expr Ea, Eb, La, Lb) =
+ def crossingpoint(expr Ea, Eb, La, Lb) =
+ def crossingpointf(expr Ea, Eb, Fen) =
+ def maycrossviewplanf(expr Ea, Eb, Fen) =
+ def insidedge(expr Point, Ea, Eb) =
+ def insideviewsphere(expr Ea, Eb, La, Lb) =
+ def insidethistriangle(expr Point, A, B, C ) =
+ def insideviewtriangle(expr Point, Ea, Eb) =
+ def insidethisface(expr Point, FaN) =
+ def coarse_line(expr A, B, Facen, Press, Col) =
+ def facepath(expr Facen) =
+ def faceshadowpath(expr Facen) =
+ def face_invisible( expr Facen )( text LineAtribs ) =
+Different kinds of renderers
+ def sharpraytrace
+ def lineraytrace(expr Press, Col) =
+ def faceraytrace(expr Press, Col) =
+ def draw_all_test( expr AlsoDrawLines ) =
+ def fill_faces( text LineAtribs ) =
+ def doitnow =
+Nematic Liquid Crystal wise
+ def generatedirline(expr Lin, Phi, Theta, Long, Currpos ) =
+ def generatedirface(expr Fen, Phi, Theta, Long, Base, Currpos ) =
+ def generateonebiax(expr Lin, Phi, Theta, Long, SndDirAngl, Base, Currpos ) =
+ def director_invisible( expr SortEmAll, ThickenFactor, CyclicLines ) =
+ def circularsheet( expr CenterP, Rad, VecX, VecY, StartA, FinisA, Width ) =
+ def banana( expr CenterPos, Radius, AngleColor, Wid, Amp ) =
+Plotting
+ def hexagonaltrimesh( expr BeHexa,theN,SideSize )( text SurFunc ) =
+ def fillfacewithlight( expr FaceN ) =
+Part III
+parametric plots and another renderer
+ def face_drawfill( expr Facen, dmin_, dmax_ ,ColAtrib, ColAtribone ) =
+ def draw_invisible( expr Option, DoJS, ColAtrib, ColAtribone ) =
+ def bracket( expr low, poi, hig ) =
+ def partrimesh( expr nt,ns,lowt,higt,lows,higs,lowx,higx,lowy,higy,lowz,higz,facz)( text parSurFunc ) =
+Part IV
+automatic perspective tuning and minimization
+ def randomfear =
+ def renormalizevc( expr inF, inVC ) =
+ def calculatecost( expr TryF, TryVc, TrySp, TrySh ) =
+ def forcepointinsidefear( text A ) =
+ def forcepairinsidepage( text A ) =
+ def calculatejump( expr AverCost, PrevCost, RandCost, JumpLimit ) =
+ def photoreverse( expr IterNum, ExpTao, JumpFact ) =
+ def minimizestep( expr Abcisscolor )( text PlainFunc ) =
+Part V
+Intersections
+ def calculatecostver(expr VerA,DisA,VerB,DisB,VerC,DisC,TryV) =
+ def improvertex( expr VerA, DisA, VerB, DisB, VerC, DisC, IniV ) =
+ def ultraimprovertex( expr PlanPoi, PlanDir, BaseCenter, Radius, LenVec,
+ def necplusimprovertex( expr PlanPoi, PlanDir,
+ def intersectprolatespheroid( expr CentrPoi, NorthPoleVec, Ray,
+Part VI
+strictly two-dimensional
+ def is_cyclic expr cpath =
+ def springpath( expr begp, endp, piturnum, piturnproj, spgfrac ) =
+ def zigzagfrontier( expr begp, endp, nzigs, dev, zthick, tthick, fthick, excol, incol ) =
+ def randomcirc( expr radi, stddev, numpois ) =
+ def labeln(expr S, Pos, RelPos) =
+ def dotlabelrand(expr S, Pos ) =
+ def radialcross( expr A, la, B, lb, GoUp) =
+ def ropethread( expr Index ) =
+ def ropepattern( expr BasePath, RopeWidth, Nturns ) =
+ def firsttangencypoint( expr Path, Point, ResolvN ) =
+ def lasermachine( expr DefinedPath, Beam, CosLimit ) =
+ def startahead( expr DefinedPath, JumpTime ) =
+ def crossingline( expr FirstPath, SecondPath, TimeTolerance ) =
+ vardef segmentarea( expr Ps ) =
+ vardef cyclicpatharea( expr P ) = % result = area of the interior
+ vardef archangle@#( expr _p, _q, _s, archwidth ) text _t =
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/featpostbeamer.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/featpostbeamer.pdf
new file mode 100644
index 00000000000..93220f5030e
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/featpostbeamer.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/featpostdocsource.tex b/Master/texmf-dist/doc/metapost/featpost/doc/featpostdocsource.tex
index 068ce54095d..00f6dfbdf84 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/featpostdocsource.tex
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/featpostdocsource.tex
@@ -1,4 +1,4 @@
-\usepackage{amsmath,amssymb,graphicx}
+\usepackage{amsmath,amssymb,graphicx,alltt}
\DeclareGraphicsRule{*}{mps}{*}{}
\graphicspath{{../mps/}}
\newfont{\normald}{logod10 scaled 1024}
@@ -9,7 +9,7 @@
\newcommand{\myem}[1]{\texttt{#1}}
\title{\FP\ manual}
\author{\href{mailto:lnobreg@gmail.com}{L. Nobre G.}}
-\date{0.8.7}
+\date{0.8.8}
\begin{document}
\mode<article>{\maketitle}
\frame{\titlepage}
@@ -39,7 +39,7 @@
Each perspective depends on the point of view. \FP\ uses the global
variable \myem{f}, of \myem{color} type, to store the $(X,Y,Z)$
space coordinates of the point of view. Also important is the aim of view
- (global variable \myem{viewcentr}). Both define the line of
+ (global variable \myem{viewcentr}). This pair of points defines the line of
view.
}
@@ -49,41 +49,49 @@
coordinates on the projection plane. \FP\ uses a projection plane that
is perpendicular to the line of view and contains the
\myem{viewcentr}. Furthermore, one of the projection plane axes is
- horizontal and the other is on the intersection of a vertical plane
- with the projection plane. ``Horizontal'' means parallel to the
- $XY$ plane. The projection plane axes are perpendicular to each other.
+ horizontal and the other is perpendicular and on the projection plane.
+ ``Horizontal'' means parallel to the $XY$ plane.
}
-
-One consequence of this setup is that \myem{f} and \myem{viewcentr}
-must not be on the same vertical line. The three kinds of projection known
-to \FP\ are schematized in figures \ref{paraproj}, \ref{coniproj} and
-\ref{spheproj}, which correspond to the diagrams presented in
-\S\ref{perspectives}. The macro that actually does the projection is, in all
-cases, \myem{rp}.
+\frame{
+ One consequence of this setup is that \myem{f} and \myem{viewcentr}
+ must not be on the same vertical line. The three kinds of projection known
+ to \FP\ are schematized in figures \ref{coniproj}, \ref{paraproj} and
+ \ref{spheproj}. The macro that actually does the projection is, in all
+ cases, \myem{rp}.
+}
\frame{
\begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=65mm]{thethreekindsofperspec.1}
+ \begin{tabular}{cc}
+ \includegraphics[width=65mm]{thethreekindsofperspec.2} &
+ \includegraphics[width=0.25\columnwidth]{cubicfigures.2}
+ \end{tabular}
\end{center}
- \caption{Parallel projection.}
- \label{paraproj}
+ \caption{Central projection (default).}
+ \label{coniproj}
\end{figure}
}
\frame{
\begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=65mm]{thethreekindsofperspec.2}
+ \begin{tabular}{cc}
+ \includegraphics[width=65mm]{thethreekindsofperspec.1} &
+ \includegraphics[width=0.25\columnwidth]{cubicfigures.1}
+ \end{tabular}
\end{center}
- \caption{Central projection.}
- \label{coniproj}
+ \caption{Parallel projection.}
+ \label{paraproj}
\end{figure}
}
\frame{
\begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=65mm]{thethreekindsofperspec.3}
+ \begin{tabular}{cc}
+ \includegraphics[width=65mm]{thethreekindsofperspec.3} &
+ \includegraphics[width=0.25\columnwidth]{cubicfigures.3}
+ \end{tabular}
\end{center}
\caption{Spherical projection. The
spherical projection is the composition of two operations: (i)~there
@@ -93,132 +101,13 @@ cases, \myem{rp}.
\end{figure}
}
-\frame{
- Some problems often require defining angles, and diagrams are
- needed to visualize their meanings. The \myem{angline} and
- \myem{squareangline} macros support this (see figure \ref{figcartaxes2}).
-}
+\subsection{Bugs}
\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{cartaxes.2}
- \end{center}
- \caption{Example that uses \myem{cartaxes}, \myem{squareangline},
- \myem{angline} and \myem{getangle}.}
- \label{figcartaxes2}
- \end{figure}
-}
-
-\frame{
- Visualizing parametric lines is another need. When two
- lines cross, one should be able to see which line is in front of the
- other. The macro \myem{emptyline} can help here (see figure
- \ref{induction}).
-}
-
-\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{parafuso.1}
- \end{center}
- \caption{\FP\ diagram using \myem{emptyline}.}
- \label{induction}
- \end{figure}
-}
-
-\frame{
- Cuboids and labels are always needed. The macros \myem{kindofcube}
- and \myem{labelinspace} fulfill this need (see figure
- \ref{cublab}). The macro \myem{labelinspace} does
- not project labels from 3D into 2D. It only \myem{Transform}s the
- label in the same
- way as its bounding box, that is, the same way as two perpendicular sides
- of its bounding box. This is only exact for parallel perspectives.
-}
-
-\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{labelconstruct.1}
- \end{center}
- \caption{\FP\ diagram using the macros \myem{kindofcube}
- and \myem{labelinspace}.}
- \label{cublab}
- \end{figure}
-}
-
-\frame{
- \begin{sloppypar}
- Some curved surface solid objects can be drawn with \FP. Among them
- are cones (\myem{very\-good\-cone}), cylinders (\myem{rigorous\-disc})
- and globes (\myem{trop\-ical\-globe}). These can also cast their shadows
- on a horizontal plane (see figure
- \ref{anddisc}). The production of shadows
- involves the global variables \myem{LightSource}, \myem{ShadowOn}
- and \myem{HoriZon}.
- \end{sloppypar}
-}
-
-\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{stageforthree.3}
- \end{center}
- \caption{\FP\ diagram using
- the macros \myem{rigorousdisc}, \myem{verygoodcone},
- \myem{tropicalglobe} and \myem{setthestage}.}
- \label{anddisc}
- \end{figure}
-}
-
-\frame{
- Another very common need is the plotting of functions, usually satisfied
- by software such as Gnuplot (\url{http://www.gnuplot.info/}) or Gri
- (\url{http://gri.sourceforge.net/}).
- Nevertheless, there are always new plots to draw. One specific \FP\
- kind of plot is the ``triangular grid triangular domain
- surface'' (see figure \ref{triangulartrimesh}).
-}
-
-\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{triangulartrimesh.1}
- \end{center}
- \caption{\FP\ surface plot using
- the macro \myem{hexagonaltrimesh}.}
- \label{triangulartrimesh}
- \end{figure}
-}
-
-\frame{
- One feature that merges 2D and 3D involves what might be called
- ``fat sticks''. A fat stick resembles the Teflon magnets used to mix
- chemicals. They have volume but can be drawn like a small straight
- line segment stroked with a \myem{pencircle}. Fat sticks may be used
- to represent direction fields (unitary vector fields without arrows).
- See figure \ref{nsmetica}.
-}
-
-\frame{
- \begin{figure}[hbtp]
- \begin{center}
- \includegraphics[width=65mm]{nsmetica.1}
- \end{center}
- \caption{\FP\ direction field macro \myem{director\_invisible} was
- used to produce this representation of the molecular structure of
- a Smectic A liquid crystal.}
- \label{nsmetica}
- \end{figure}
-}
-
-\frame{
- Finaly, it is important to remember that some capabilities of \FP,
+ \changeableframetitle{Bugs}
+ It is important to keep in mind that some capabilities of \FP,
although usable, may be considered ``buggy'' or only partially
- implemented. These include the
- calculation of intersections between polygons, as in figure
- \ref{figsharpraytrace}, and the drawing of cylinders with holes, as
+ implemented. These include the drawing of cylinders with holes, as
in figure \ref{buggydisc}.
}
@@ -228,7 +117,7 @@ cases, \myem{rp}.
\includegraphics[width=65mm]{fakehole.1}
\end{center}
\caption{\FP\ example containing a
- \myem{rigorousdisc} with several holes.}
+ \myem{rigorousdisc} with five holes, four of which are fake.}
\label{buggydisc}
\end{figure}
}
@@ -236,15 +125,16 @@ cases, \myem{rp}.
\subsection{Moving on, slowly}
\frame{
+ \changeableframetitle{Moving on}
It is highly beneficial to
be able to understand and cope with \MP\ error messages as
\FP\ has no protection against mistaken inputs. One
probable cause of errors is the use of variables with the name of
procedures (macros), like
\begin{quote}
-\begin{verbatim}
-X, Y, Z, W, N, rp, cb, ps
-\end{verbatim}
+\begin{alltt}
+X, Y, Z, W, N, rp, cb, ps, vp
+\end{alltt}
\end{quote}
All other procedure names have six or more characters.
}
@@ -264,16 +154,17 @@ X, Y, Z, W, N, rp, cb, ps
the \MP\
\myem{color} variable type. It looks like this:
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
(red,green,blue)
-\end{verbatim}
+\end{alltt}
\end{quote}
+
Its components may, nevertheless,
be arbtitrary numbers, like:
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
(X,Y,Z)
-\end{verbatim}
+\end{alltt}
\end{quote}
So, the
\myem{color} type is adequate to define not only colors but
@@ -281,142 +172,42 @@ X, Y, Z, W, N, rp, cb, ps
}
\frame{
+ \changeableframetitle{Hello world}
One very minimalistic example program could be:
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
input featpost3Dplus2D;
beginfig(1);
cartaxes(1,1,1);
endfig;
-end;
-\end{verbatim}
+end.
+\end{alltt}
\end{quote}
where \myem{cartaxes} is a
\FP\ macro that produces
- the Cartesian referential.
-}
-
-One small example program may be:
-\begin{quote}
-\begin{verbatim}
-input featpost3Dplus2D;
-f := 5.4*(1.5,0.5,1);
-Spread := 30;
-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;
-end.
-\end{verbatim}
-\end{quote}
-where \myem{kindofcube}
-is a \FP\ macro that produces
-a rectangular prism (cuboid). See figure \ref{figkindofcube1}.
-
-\frame{
- \begin{figure}[bpt]
- \begin{center}
- \includegraphics[width=65mm]{kindofcube.1}
- \end{center}
- \caption{Example that uses \myem{kindofcube}.}
- \label{figkindofcube1}
- \end{figure}
+ the Cartesian reference frame with axis labels.
}
\frame{
The main variable of any three-dimensional figure is the
point of view. \FP\ uses the variable \myem{f}
as the point of view. \myem{Spread} is another global
- variable that controls the size of the projection.
-}
-
-Another example may be:
-\begin{quote}
-\begin{verbatim}
-input featpost3Dplus2D;
-f := (13,7,3.5);
-Spread := 35;
-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;
-end.
-\end{verbatim}
-\end{quote}
-where we find a \myem{rigorousdisc}
-and a \myem{verygoodcone}
-in addition to
-\myem{setthestage}, \myem{ellipticpath},
-\myem{twocyclestogether} and
-\myem{kindofcube}. See figure \ref{figstageforthree}.
-
-\frame{
- \begin{figure}[bpt]
- \begin{center}
- \includegraphics[width=65mm]{stageforthree.1}
- \end{center}
- \caption{Example that uses \myem{rigorousdisc} and
- \myem{verygoodcone}.}
- \label{figstageforthree}
- \end{figure}
+ variable that controls the size of the projection.
+ Therefore the minimalistic program above should also contain,
+ for example:
+ \begin{quote}
+\begin{alltt}
+f:=(6,1,3);
+Spread:=40;
+\end{alltt}
+ \end{quote}
}
-\subsection{Main reason}
+\subsection{Why \FP?}
\frame{
- \changeableframetitle{Use \FP\ because}
- \FP\ has already been used in scientific publications:
+ \changeableframetitle{Why \FP?}
+ \FP\ is good enough to produce scientific diagrams:
\begin{itemize}
\item Figure 1 of
\href{http://pre.aps.org/abstract/PRE/v60/i3/p2985_1}{\textit{Phys. Rev. E},
@@ -430,102 +221,96 @@ in addition to
\end{itemize}
}
-\section{\FP\ in detail}
+\subsection{A small subset of features}
+
+\subsubsection{Angles}
\frame{
- \changeableframetitle{List of features}
- 3D dots, vectors, flat arrows, angles, parametric
- lines, circles and ellipses, cuboids,
- cones, cylinders, cylindric holes, parts of cylindrical surfaces,
- spheres and spheroids, globes, hemispheres, torus,
- elliptical frusta,
- polygons, polyhedra, functional and
- parametric surfaces, direction fields, field lines
- and trajectories in vector fields (differential equations),
- schematic automobiles, schematic electric charges, automatic
- perspective tuning, 2D representation of ropes, reference horizontal
- surfaces, hexagonal plots, schematic 2D springs, zig--zag lines,
- irregular circles, selective intersection of two circles, detection
- of tangency, paths for CNC machines, minimization of scalar functions,
- intersection of 2D areas, intersection of three spheres,
- intersection of a plane, a cylinder and a spheroid.
+ \changeableframetitle{Angles}
+ Some problems often require defining angles, and diagrams are
+ needed to visualize their meanings. The \myem{angline} and
+ \myem{squareangline} macros support this (see figure \ref{figcartaxes2}).
}
-\subsection{Perspectives}\label{perspectives}
-
-\FP\ can do three kinds of perspective (see figures
-\ref{figcubicfigures1}, \ref{figcubicfigures2} and \ref{figcubicfigures3})
-\begin{quote}
-\begin{verbatim}
-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;
- draw_all_test(red,true);
-endfig;
-
-beginfig(2);
- ParallelProj := false;
- SphericalDistortion := false;
- draw_all_test(green,true);
-endfig;
-
-beginfig(3);
- ParallelProj := false;
- SphericalDistortion := true;
- PrintStep := 5;
- draw_all_test(blue,true);
-endfig;
+\frame{
+ \begin{figure}[hbtp]
+ \begin{center}
+ \includegraphics[width=65mm]{cartaxes.2}
+ \end{center}
+ \caption{Example that uses \myem{cartaxes}, \myem{squareangline},
+ \myem{angline} and \myem{getangle}.}
+ \label{figcartaxes2}
+ \end{figure}
+}
-end;
-\end{verbatim}
-\end{quote}
+\subsubsection{Parametric lines}
+\frame{
+ \changeableframetitle{Parametric lines}
+ Visualizing parametric lines is another need. When two
+ lines cross, one should be able to see which line is in front of the
+ other. The macro \myem{emptyline} can help here (see figure
+ \ref{induction}).
+}
\frame{
- \begin{figure}[bpt]
+ \begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=0.45\columnwidth]{cubicfigures.1}
+ \includegraphics[width=65mm]{parafuso.1}
\end{center}
- \caption{Orthogonal perspective.}
- \label{figcubicfigures1}
+ \caption{\FP\ diagram using \myem{emptyline}.}
+ \label{induction}
\end{figure}
}
+\subsubsection{Curved solids}
+
\frame{
- \begin{figure}[bpt]
+ \changeableframetitle{Curved solids}
+ \begin{sloppypar}
+ Some curved surface solid objects can be drawn with \FP. Among them
+ are cones (\myem{very\-good\-cone}), cylinders (\myem{rigorous\-disc})
+ and globes (\myem{trop\-ical\-globe}). These can also cast their shadows
+ on a horizontal plane (see figure
+ \ref{anddisc}). The production of shadows
+ involves the global variables \myem{LightSource}, \myem{ShadowOn}
+ and \myem{HoriZon}.
+ \end{sloppypar}
+}
+
+\frame{
+ \begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=0.45\columnwidth]{cubicfigures.2}
+ \includegraphics[width=65mm]{stageforthree.3}
\end{center}
- \caption{Rigorous perspective.}
- \label{figcubicfigures2}
+ \caption{\FP\ diagram using
+ the macros \myem{rigorousdisc}, \myem{verygoodcone},
+ \myem{tropicalglobe} and \myem{setthestage}.}
+ \label{anddisc}
\end{figure}
}
+\subsubsection{Fat sticks}
+
\frame{
- \begin{figure}[bpt]
+ \changeableframetitle{Fat sticks}
+ One feature that merges 2D and 3D involves what might be called
+ ``fat sticks''. A fat stick resembles the Teflon magnets used to mix
+ chemicals. They have volume but can be drawn like a small straight
+ line segment stroked with a big \myem{pencircle}. Fat sticks may be used
+ to represent direction fields (unitary vector fields without arrows).
+ See figure \ref{nsmetica}.
+}
+
+\frame{
+ \begin{figure}[hbtp]
\begin{center}
- \includegraphics[width=0.45\columnwidth]{cubicfigures.3}
+ \includegraphics[width=65mm]{nsmetica.1}
\end{center}
- \caption{Fish-eye perspective.}
- \label{figcubicfigures3}
+ \caption{\FP\ direction field macro \myem{director\_invisible} was
+ used to produce this representation of the molecular structure of
+ a Smectic A liquid crystal.}
+ \label{nsmetica}
\end{figure}
}
@@ -538,9 +323,9 @@ end;
or fish-eye projections. To draw a line in
3D-space try
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
draw rp(a)--rp(b);
-\end{verbatim}
+\end{alltt}
\end{quote}
where
\myem{a} and \myem{b} are points in space
@@ -548,50 +333,23 @@ draw rp(a)--rp(b);
}
\frame{
- \changeableframetitle{``straight lines''}
+ \changeableframetitle{``Straight lines''}
But if you're going for fish-eye it's better to
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
draw pathofstraightline(a,b);
-\end{verbatim}
+\end{alltt}
\end{quote}
If
you don't know, leave it as
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
drawsegment(a,b);
-\end{verbatim}
+\end{alltt}
\end{quote}
}
-\subsection{Angles}
-
-When \FP\ was created its main ability was
-to mark and to calculate angles. This is done with the
-macros \myem{angline} and \myem{getangle} as in the
-following program (see figure \ref{figcartaxes2}).
-\begin{quote}
-\begin{verbatim}
-input featpost3Dplus2D;
-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;
-\end{verbatim}
-\end{quote}
-
-\subsection{Intersections}
+\subsubsection{Intersections}
The most advanced feature of \FP\ is the
ability to calculate the intersections of planar and
@@ -600,7 +358,7 @@ most "bugged" feature.}. It can draw the visible
part of arbitrary sets of polygons as in
the following program:
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
input featpost3Dplus2D;
numeric phi;
phi = 0.5*(1+sqrt(5));
@@ -616,7 +374,7 @@ beginfig(1);
sharpraytrace;
endfig;
end
-\end{verbatim}
+\end{alltt}
\end{quote}
See figure \ref{figsharpraytrace}.
@@ -630,7 +388,7 @@ See figure \ref{figsharpraytrace}.
\end{figure}
}
-\subsection{Coming back to 3D from 2D}
+\subsubsection{Coming back to 3D from 2D}
\frame{
\changeableframetitle{Coming back to 3D from 2D}
@@ -660,7 +418,7 @@ use \myem{photoreverse} to obtain the perspective parameters
corresponding to the image; and (iv) use those perspective parameters to
draw 3D matching schematic diagrams on the image.
-\subsection{Coming back to 3D from 1D}
+\subsubsection{Coming back to 3D from 1D}
\frame{
\changeableframetitle{Coming back to 3D from 1D}
@@ -694,7 +452,7 @@ draw 3D matching schematic diagrams on the image.
\end{figure}
}
-\subsection{Scalar function minimization}
+\subsubsection{Scalar function minimization}
\frame{
\changeableframetitle{Scalar function minimization}
@@ -707,16 +465,37 @@ draw 3D matching schematic diagrams on the image.
\end{center}
}
+\mode<presentation>{\frame{
+ \changeableframetitle{The features}
+ 3D dots, vectors, flat and curved arrows, angles, parametric
+ lines, circles and ellipses, cuboids, cones, cylinders, cylindric
+ holes, parts of cylindrical surfaces, spheres and spheroids, globes,
+ hemispheres, tora, elliptical frusta, revolution paraboloids,
+ polygons, polyhedra, functional and parametric surfaces, direction
+ fields, field lines and trajectories in vector fields (differential
+ equations), schematic automobiles, schematic electric charges,
+ automatic perspective tuning, 2D representation of ropes, reference
+ horizontal surfaces, hexagonal plots, schematic 2D springs, zig--zag
+ lines, irregular circles, selective intersection of two circles, 2D
+ detection of tangency, paths for laser cutting machines,
+ minimization of scalar functions, intersection of 2D areas,
+ intersection point of three spheres, intersection point of a plane,
+ a cylinder and a spheroid, intersection of a straight line and a
+ spheroid, intersection of a straight line and a torus.
+
+ And much more.
+}}
+
\section{Reference Manual}
Some words about notation.
The meaning of macro, function, procedure and routine is the same.
Global variables are presented like this:
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
vartype var, anothervar
anothervartype yetanothervar
-\end{verbatim}
+\end{alltt}
\end{quote}
Explanation of \myem{var}, \myem{anothervar} and
\myem{yetanothervar}. \myem{vartype} can be any one of
@@ -758,11 +537,11 @@ function is presented like
\subsection{Global variables}
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
boolean ParallelProj
boolean SphericalDistortion
boolean MalcomX
-\end{verbatim}
+\end{alltt}
\end{quote}
Kind of projection calculated by \myem{rp}.
By default projections
@@ -796,9 +575,9 @@ figure\footnote{To be developed in future versions.}.
}
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
color f, viewcentr
-\end{verbatim}
+\end{alltt}
\end{quote}
The point of view is \myem{f}. The plane or sphere
of projection contains
@@ -806,21 +585,21 @@ the center of view \myem{viewcentr}.
The axis, parallel to zz, that contains the
\myem{viewcentr} is projected on a vertical line.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric MaxFearLimit
-\end{verbatim}
+\end{alltt}
\end{quote}
The above variable defines the maximum allowed 3D distance between
\myem{viewcentr} and the projection of a point as calculated by
\myem{rp} (remember that 3D distances have no units). Everything
located beyond this maximum is compressed into a circumference.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric Spread
pair ShiftV, OriginProjPagePos
numeric PageWidth
numeric PageHeight
-\end{verbatim}
+\end{alltt}
\end{quote}
These variables control
the placement of the projection on the
@@ -834,11 +613,11 @@ centered at \myem{OriginProjPagePos}
and scaled to fit inside a rectangle of
\myem{PageWidth} by \myem{PageHeight}.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
color V[]
color L[]p[]
color F[]p[]
-\end{verbatim}
+\end{alltt}
\end{quote}
Vertexes, lines and faces.
The idea here is to draw
@@ -855,19 +634,19 @@ line (\myem{L[]p[]}) is itself a list of vertexes.
All vertexes of the same poligon should belong
to the same plane.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric NL
numeric npl[]
numeric NF
numeric npf[]
-\end{verbatim}
+\end{alltt}
\end{quote}
Number of lines, number of vertexes of each line,
number of faces, number of vertexes of each face.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric PrintStep
-\end{verbatim}
+\end{alltt}
\end{quote}
\myem{Printstep} is the size of iterative jumps
along lines. Used by
@@ -875,7 +654,7 @@ along lines. Used by
\myem{pathofstraightline}.
Big \myem{Printstep}s make fast \myem{lineraytrace}ings.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
boolean FCD[]
colour TableC[]
numeric TableColors
@@ -883,7 +662,7 @@ numeric FC[]
colour HigColor
colour SubColor
color LightSource
-\end{verbatim}
+\end{alltt}
\end{quote}
\myem{FCD} means "face color defined". The
\myem{draw\_invisible} macro draws
@@ -898,27 +677,27 @@ functional or parametric surface. In this case, if we are
looking at the polygon from below than \myem{SubColor} is
subtracted from its colour.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric RopeColorSeq[]
numeric RopeColors
-\end{verbatim}
+\end{alltt}
\end{quote}
The above variables are used by \myem{ropepattern}.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
numeric TDAtiplen
numeric TDAhalftipbase
numeric TDAhalfthick
-\end{verbatim}
+\end{alltt}
\end{quote}
The above variables control the shape of Three-Dimensional Arrows.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
boolean ShadowOn
numeric HoriZon
-\end{verbatim}
+\end{alltt}
\end{quote}
When \myem{ShadowOn} is set \myem{true}, some objects can
cast a black shadow on a horizontal plane of \myem{Z}
@@ -954,38 +733,38 @@ calculate the location of shadows using \myem{cb}. These are:
\myem{rigorousfearshadowpath}; and
\myem{faceshadowpath}.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
path VGAborder
-\end{verbatim}
+\end{alltt}
\end{quote}
This path and the macro \myem{produce\_vga\_border} are
meant to help you clip the \myem{currentpicture} to a 4:3
rectangle as in a (old) movie frame.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
pair PhotoPair[]
color PhotoPoint[]
numeric PhotoMarks
-\end{verbatim}
+\end{alltt}
\end{quote}
The above variables are used by \myem{photoreverse}.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
pen ForePen, BackPen
path CLPath
numeric NCL
-\end{verbatim}
+\end{alltt}
\end{quote}
The above variables are used by \myem{closedline}.
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
boolean OverRidePolyhedricColor
string ostr[]
numeric ActuC, Nobjects, RefDist[]
-\end{verbatim}
+\end{alltt}
\end{quote}
\myem{OverRidePolyhedricColor} is used by \myem{fillfacewithlight}.
\myem{Nobjects}, \myem{ostr} and \myem{RefDist[]} are auxiliary
@@ -993,9 +772,6 @@ variables used by \myem{getready} and \myem{doitnow}.
\myem{Actuc} is used both by \myem{hexagonaltrimesh} and
by \myem{partrimesh}.
-
-
-
\subsection{Definitions}
\begin{itemize}
@@ -1008,12 +784,12 @@ provide a list of vertexes in a correct
sequence for each polygon and/or
line. Suppose a tetrahedron
\begin{quote}
-\begin{verbatim}
+\begin{alltt}
V3:=(+1,-1,-1);V2:=(-1,+1,-1);
V4:=(+1,+1,+1);V1:=(-1,-1,+1);
makeface2(1,2,3);makeface3(1,2,4);
makeface1(3,4,1);makeface4(3,4,2);
-\end{verbatim}
+\end{alltt}
\end{quote}
The
number in the last makeface or last
@@ -1084,7 +860,7 @@ vectors.
of a vector. The first angle (\myem{xpart}) is
measured beetween the vector projection on the \myem{XY}
plane and the \myem{X} axis. The second angle
-(\myem{ypart})is measured
+(\myem{ypart}) is measured
beetween the vector and its projection on the \myem{XY}
plane. This may be usefull to find the arguments of
\myem{kindofcube}
@@ -1137,6 +913,14 @@ perpendicular (\myem{R} is the argument) or (ii)
\begin{enumerate}
\item \myem{color} Spatial position.
\end{enumerate}
+\item pair {\bfseries vp()} Converts spatial directions into
+planar positions on the paper page. These positions are the
+vanishing points of those directions. The conversion
+considers the values of the same global
+variables as \myem{rp}.
+\begin{enumerate}
+\item \myem{color} Spatial direction.
+\end{enumerate}
\item color {\bfseries cb()} Calculates the position of the
shadow of a point. Uses \myem{HoriZon} and
\myem{LightSource}.
@@ -1174,7 +958,6 @@ projection plane.
\end{itemize}
-
\subsubsection{Plain Basic Macros}
\begin{itemize}
@@ -1406,7 +1189,10 @@ path in 3D space.
\end{enumerate}
\item drawlabel {\bfseries labelinspace()} Draw some 2D
\myem{picture} on some 3D plane (only when
-\myem{ParallelProj:=true}).
+\myem{ParallelProj:=true}). Just \myem{Transform}s the
+ label in the same
+ way as its bounding box, that is, the same way as two perpendicular sides
+ of its bounding box. This is only exact for parallel perspectives.
\begin{enumerate}
\item \myem{color} Position for the lower-left
corner.
@@ -1428,7 +1214,6 @@ letf edge.
\end{itemize}
-
\subsubsection{Standard Objects}
\begin{itemize}
@@ -1604,7 +1389,6 @@ torus plane.
\end{itemize}
-
\subsubsection{Composed Objects}
\begin{itemize}
@@ -1678,7 +1462,6 @@ of the cylinders). \myem{bluepart}-wheel ray.
\end{figure}
}
-
\item draw {\bfseries quartertorus()} Draws a part of a torus.
\begin{enumerate}
\item \myem{color} Center of the base torus.
@@ -1701,7 +1484,6 @@ of the cylinders). \myem{bluepart}-wheel ray.
\end{itemize}
-
\subsubsection{Shadow Pathes}
Please remember that not all shadows are pathes.
@@ -1739,7 +1521,6 @@ circle.
\end{itemize}
-
\subsubsection{Differential Equations}
Before we proceed, be aware that solving differential
@@ -1887,7 +1668,6 @@ before a second figure.
\end{itemize}
-
\subsubsection{Nematics (Direction Fields)}
Nematics are the least ordered liquid crystals. Their
@@ -2107,7 +1887,9 @@ for each pair (\myem{S},\myem{T}).
\end{itemize}
\section{Missing documentation}
-\begin{verbatim}
+\begin{alltt}
+minimizestep( expr Abcisscolor )( text PlainFunc )
+
improvertex( expr VerA, DisA, VerB, DisB, VerC, DisC, IniV )
ultraimprovertex( expr PlanPoi, PlanDir, BaseCenter, Radius, LenVec,
@@ -2120,10 +1902,14 @@ necplusimprovertex( expr PlanPoi, PlanDir,
intersectprolatespheroid( expr CentrPoi, NorthPoleVec, Ray,
LinePoi, LineDir, IniV )
+intersectorus( expr Tcenter, Tmoment, Bray, Sray, LinePoi, LineDir )
+
ellipsoid( expr Centr, AxOne, AxTwo, AxThr )
-minimizestep( expr Abcisscolor )( text PlainFunc )
-\end{verbatim}
+revolparab( expr BaseCenter, ParabTip, BaseRay )
+
+pointinsidetorus( expr Point, Tcenter, Tmoment, Bray, Sray )
+\end{alltt}
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/featpostmanual.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/featpostmanual.pdf
index 39e1095e536..86d946919ed 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/featpostmanual.pdf
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/featpostmanual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.pdf
index d3a2eea7d44..9bfdf4e13bc 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.pdf
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.tex b/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.tex
index 3fbc984c7f0..e8222d7a769 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.tex
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/lastfiguretest.tex
@@ -3,7 +3,7 @@
\setbeamercolor{normal text}{bg=red!7}
\usepackage{amsmath,amssymb,graphicx}
\DeclareGraphicsRule{*}{mps}{*}{}
-\graphicspath{{../mps/}}
+\graphicspath{{../}}
\newfont{\normald}{logod10 scaled 1024}
\newcommand{\MF}{{\normald METAFONT}}
\newcommand{\MP}{{\normald METAPOST}}
@@ -12,9 +12,9 @@
\begin{document}
\frame{
- \frametitle{\myem{torushadow}( $\vec{c}$, $\vec{M}$, $R_B$, $R_s$ )}
+ \frametitle{\myem{intersectorus}( $\vec{c}$, $\vec{M}$, $R_B$, $R_s$, $\vec{p}$, $\vec{D}$ )}
\begin{center}
- \includegraphics[width=80mm]{torus.7}
+ \includegraphics[width=80mm]{intersectorus.1}
\end{center}
}
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.pdf
index fd84b247aee..014301dc445 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.pdf
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.tex b/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.tex
index 1f64052e701..ee28b90bfac 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.tex
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/metapostpropaganda.tex
@@ -64,7 +64,7 @@
\item \MP, 1994, John Hobby
\end{itemize}
\pause
- \MP\ is the realm og graphic \textcolor{green}{parameterization}.
+ \MP\ is the realm of graphic \textcolor{green}{parameterization}.
}
\subsection{What is \MP ?}
@@ -73,7 +73,7 @@
\frametitle{Main features of \MP}
\begin{itemize}
\item It is easy to express geometry as \MP\ code
- \item \MP\ outputs \myem{postscript} or SVG
+ \item \MP\ outputs \myem{postscript}, SVG or PNG
\begin{quote}
\myem{outputformat := \dq svg\dq;}
\end{quote}
@@ -269,7 +269,8 @@
\item Memory
\item Number of variables
\end{itemize}
- Not for long\ldots
+ Since \MP\ version 1.803, the command line switch
+ \myem{--numbersystem} provides other over- and underflows
}
\subsection{Consistency}
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/BezierApprox.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/BezierApprox.pdf
new file mode 100644
index 00000000000..95060aab6a9
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/BezierApprox.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/CHANGESv1.803.txt b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/CHANGESv1.803.txt
new file mode 100644
index 00000000000..36b1b8d98f3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/CHANGESv1.803.txt
@@ -0,0 +1,1504 @@
+
+This file is public domain.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.803:
+----------------------------------------------------------------------
+
+* Fixed a bug in the path tension handling that sometimes caused
+ distorted output.
+
+* A number of small alterations to the build system making it easier
+ to integrate metapost with W32TEX.
+
+* Fix the internal rounding functions in --numbersystem=double so that
+ they round exactly like in --numbersystem=scaled mode.
+
+* From Elie Roux: a fix to graph.mp to prevent log-scaled graphs with
+ large ranges from causing the "Value is too large" error.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.802:
+----------------------------------------------------------------------
+
+* Fixed a bug causing overly large characters in SVG output mode when
+ prologues != 3.
+
+* Removed a crash during free-ing of TFM metric data at the end of the
+ run.
+
+* Fixed a problem with colors in SVG output mode.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.801:
+----------------------------------------------------------------------
+
+* fixed an off-by-one error in the SVG output that prevented the last
+ font's glyphs from actually being output to the svg file under
+ prologues:=3;
+
+* fixed a bug in bbox calculations in that caused the max y to be set
+ based on the maximum x coordinate internal value instead of the
+ maximum y coordinate.
+
+* fixed a bug where metapost incorrectly produced a 'degenerate spec'
+ error.
+
+* build fixes for various platforms imported from TeXLive 2013, as
+ well as the latest kpathsea development etc.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.800:
+----------------------------------------------------------------------
+
+* A new string valued internal "outputformatoptions" is used by PNG
+ output mode to control the png file format. In the future, this
+ internal may also be used for options to the other output formats.
+
+ The syntax for "outputformatoptions" is a space-separated list of
+ settings. Individual settings are keyword+'='+value. The only
+ currently allowed ones are:
+ format=[rgba|rgb|graya|gray]
+ antialias=[none|fast|good|best]
+ No spaces are allowed on the left, nor on the right, of the equals
+ sign inside a setting.
+
+ The assignment that would match the compiled-in default setup is:
+ outputformatoptions := "format=rgba antialias=fast";
+ however, "outputformatoptions" is initially the empty string.
+
+ Some notes on the (new) PNG output formats:
+ - The 'rgb' and 'gray' subformats have a white background. The
+ 'rgba' and 'graya' subformats have a transparent background.
+ - Bitdepth is always 8.
+ - In all cases, the image is initially created in 8-bit RGB
+ mode. For 'gray' and 'graya', the RGB colors are reduced just
+ before the actual PNG file is written, using a standard rule:
+ g = 0.2126*r + 0.7152*g + 0.0722*b
+ - CMYK colors are always converted to RGB during generation of
+ the output image using:
+ r = 1 - (c+k>1 ? 1 : c+k);
+ g = 1 - (m+k>1 ? 1 : m+k);
+ b = 1 - (y+k>1 ? 1 : y+k);
+ - If you care about color conversions, you should be doing a
+ "within <pic>" loop inside "extra_endfig". The built-in
+ conversions are more of a fallback.
+
+* A new string-valued internal "outputfilename", which is set by
+ "shipout" to the value of the just created file name. Until the
+ first shipout has occurred, it is the empty string.
+
+
+* Fixed a number of bugs where Metapost loaded the default font map
+ file multiple times, resulting in lots of "fontmap entry for
+ `<fontname>' already exists, duplicates ignored" warnings.
+
+* The "glyph <> of <>" operation could crash on fonts with empty
+ subpaths in the charstrings.
+
+* Fixed a bug in the postscript encoding reader that caused a buffer
+ overflow (fatal error) for encoding files that do not end with a
+ newline.
+
+* Sped up png creation a bit by using smarter libpng options.
+
+* In the 'double' numbersystem, lots of precision was lost due to a bad
+ internal conversion of fractions to scaled values. This affected the
+ "rotated by", "directiontime", "sind" and "cosd" primitives, as well
+ as internal dependency calculations.
+
+* In the 'double' numbersystem, an internal rounding error caused
+ "directiontime" to return bad results for requests near zero.
+
+* There was a big scaling miscalculation while outputting glyphs in SVG
+ mode with "prologues:=3". The output labels were so big that they
+ fell completely outside of the generated image.
+
+* A problem resulting in 'This can't happen (endinput)' caused by a
+ missing "end" at the end of the run was fixed.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.790:
+----------------------------------------------------------------------
+
+* Lots of speedups.
+
+* Fixed bug in division expressions that started with a literal number.
+
+* A few problems with bad deallocations were solved.
+
+* A bug where after saving and redefinition of primitives, they later
+ were restored to 'undefined' instead of to their primitive meaning.
+
+* The "double" literal number parser now only accepts scientific
+ notation if the character following 'E' or 'e' is '+', '-', or
+ a digit.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.780:
+----------------------------------------------------------------------
+
+* The turningnumber calculation in 1.770 was bugged.
+
+* The picture export in 1.770 forgot to add trailing zeroes to the
+ log and term output channel resulting in rubbish output.
+
+* The arguments of the PS "dtransform" operator have been fixed
+ (was wrong since 1.750).
+
+* The warning limit in numbersystem=double mode is now exactly 2**52.
+
+* A bunch of obvious memory leaks fixed. Not all yet, but now the
+ MPlib seems to be usable even with many graphics.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.770:
+----------------------------------------------------------------------
+
+This is an alpha release for testing & debugging only!
+
+* The command line switch --numbersystem replaces --math.
+
+* Two new internals: numbersystem (string, read-only, either "scaled"
+ or "double" at the moment) and numberprecision (numeric, currently
+ a no-op).
+
+* There is a new bitmap backend:
+
+ outputformat:="png";
+
+ This backend uses cairo and libpng to generate PNG bitmap data.
+ The created PNG used RGB + Alpha, with anti-aliasing, at 72dpi,
+ and with a transparent background.
+
+* Associated with this, there are new internals "hppp" and "vppp",
+ that are used by the bitmap backend to decide on the scale of
+ the generated bitmap. Default value for both new internals is
+ "1.0", i.e. one pixel per Metapost point.
+
+ The internal names come from metafont.
+
+* There are two new primitives for use with picture item objects:
+
+ prescriptpart
+ postscriptpart
+
+* The C API has been extended to allow path control point resolution
+ without going through the Metapost input language, see
+ manual/mplibapi.tex for details.
+
+* The C API has been extended with a "math_mode" switch in the options
+ structure, and the memory size options as well as "ini_mode" have
+ been removed (the MPlib instance now always starts up in inimp mode)
+
+* The code for picture shipout now uses "double" for all floating point
+ values. This can give small differences in the actual output files in
+ traditional mode due to the required scaled -> double conversion, but
+ was necessary to support the new numerical backend code.
+
+* The Lua API internals have been updated to reflect the C API changes.
+
+* All known crashes in earlier versions of Metapost have been fixed.
+
+Known issues:
+
+* The manual is not up-to-date yet on the metapost input language
+ changes.
+
+* There are various memory leaks.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.750:
+----------------------------------------------------------------------
+
+This is an alpha release for testing & debugging only!
+
+* mpost now accepts --math=double as an argument. This switches the
+ internal arithmetic functions from using a scaled 32-bit data type
+ to 64-bit floating point.
+
+* With --math=double, the input scanner has been changed to allow
+ a := 1.0E20
+ as valid input format for a numerical value
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.504:
+----------------------------------------------------------------------
+
+* Small build system tweaks from TeXLive 2012.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.503:
+----------------------------------------------------------------------
+
+* String comparisons have been fixed, these were broken in previous
+ 1.50x versions.
+
+* verbatimtex ... etex processing had a horrible bug that is now
+ fixed.
+
+* A fix has been applied for a bug that made redeclared variable
+ subscript tags disappear.
+
+* The behavior of the %{<internal>} escape sequence in 'outputtemplate'
+ changed (but not that of the single-letter shortcuts). Internal
+ variables within %{...} are neither rounded nor zero-padded.
+
+* A very long list of improvements to the manual.
+
+* MetaPost now adheres to the openin_any / openout_any settings in
+ texmf.cnf
+
+* The 'prologues:=3 output' with embedded labels was unreliable,
+ especially when the resulting eps was included into a TeX document
+ via dvips.
+
+* 'newinternal numeric' has been fixed, it generated an error in
+ metapost 1.211 and earlier 1.50x versions.
+
+* Label regeneration sometimes failed to run when the file time stamps
+ were close together.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.502:
+----------------------------------------------------------------------
+
+* New build system and kpathsea imported from TeX Live.
+
+* Various bugfixes.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.501:
+----------------------------------------------------------------------
+
+* The maximum number of variable instances has increased from approx.
+ 33 million (2^25-1) to 2 billion (2^31-1).
+
+* New build system and kpathsea imported from TeX Live.
+
+* Many small bugfixes to 1.500.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.500:
+----------------------------------------------------------------------
+
+* Actual memory dump files do not exist any more. --mem=<MEM> and
+ all other methods of supplying a MEM file are now interpreted
+ somewhat like this pseudo-metapost-code:
+
+ begingroup;
+ let dump = end;
+ input MEM[.mp];
+ endgroup;
+
+ this process is supposed to be transparent besides the facto that
+ there is some extra terminal output and logging.
+
+* All memory is now allocated and freed dynamically. There are only
+ two remaining overflow errors(1):
+
+ "expansion depth" : this is a guard against infinite recursion,
+ the value is 10000.
+ "sizes per font" : this is maxed out for data-structure reasons,
+ the value is 32767.
+
+ from texmf.cnf, now only the "error_line", "half_error_line" and
+ "print_line settings" are used.
+
+ (1) but now you can reach the operating system limits, of course.
+
+* As this is an alpha release containing lots and lots of new code,
+ MetaPost starts up with the internal equivalent of 'loggingall;'
+ in effect. This results in log files that can help in debugging.
+
+* Expect bugs and (minor) memory leaks.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.212:
+----------------------------------------------------------------------
+
+* Small build system tweaks from TeXLive 2011.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.211:
+----------------------------------------------------------------------
+
+* In previous 1.20X versions, the 'glyph infont' operator did not handle
+ fonts with seac (old-style composite characters) properly.
+
+* Incorporated the latest versions of kpathsea and the build system
+ from TeXLive.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.210:
+----------------------------------------------------------------------
+
+* In previous 1.20X versions, btex ... etex handling forgot to take
+ the passed directory location of input-ed files into account.
+
+* verbatimtex ... etex is now copied as is. Whitespace stripping
+ and appending of % no longer happen.
+
+* The mpost executable now always strips exactly one extension from
+ the jobname (unless explicit --jobname was given)
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.209:
+----------------------------------------------------------------------
+
+* Previous 1.20X mem files were architecture-dependent.
+
+* Metapost now uses getopt once again, which makes the commandline
+ handling compatible with pre-1.20X versions. However, the syntax
+ -sprologues=1 is now no longer supported (the space between -s
+ prologues is now mandatory).
+
+* On some systems, metapost would crash inside the function that prints
+ the 'fatal error' message.
+
+* The 'glyph infont' operator would sometimes cause crashes, and in
+ other cases it generated bad output.
+
+* There was a space missing in the generated output when mpprocset
+ was set. This was still legal PostScript, but it confused mptopdf.
+
+* In previous 1.20X versions, the font map file was read for each
+ figure that contained a label, resulting in lots of harmless
+ but scary warnings being reported.
+
+* The --debug switch is now documented in the command-line help.
+
+* The help text now mentions the metapost version.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.208:
+----------------------------------------------------------------------
+
+* Previous versions of MetaPost 1.20x were overeager to remove file
+ extensions from the end of the jobname.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.207:
+----------------------------------------------------------------------
+
+* With the -file-line-error commandline option, MetaPost 1.20x always
+ reported the name of the most recently 'input' file instead of the
+ name of the actual current file.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.206:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* Many of the commands in the MP language cause strings in the string
+ pool to be printed to new strings that are also built up in the
+ string pool. This could cause crashes when the new string wouldn't
+ fit in the memory allocated.
+
+* Failure to initialize the jobname in the MP_options struct could
+ cause crashes in library mode.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.205:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* Metapost did not handle well files with extensions other than .mp.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.204:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* Metapost could go into an endless output loop when characters in
+ bitmap fonts where used, because it tried to limit the %*Font output
+ line to a specific number of bytes.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.203:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* Building version 1.202 for source required X11 headers to be installed.
+
+* Another infinite recursion trap added, now for erroneous vardefs
+ with suffixes (reported by Nicola Vitacolonna).
+
+* Fix infinite loop recursion on integer overflow (reported by Nicola
+ Vitacolonna, fix based on a hint from Dan Luecking).
+
+* In version 1.202, setting "job_name" from lua code caused a crash.
+
+* The "filename" field on the lua figure object in 1.202 was just the
+ extension, instead of the whole file name.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.202:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* Fix greypart <numeric> (always returned 0).
+
+* Make 'withcolor true' explicitly reset the color model to uninitialized.
+
+* Report which mem file can't be found, and use 'plain' instead of PLAIN
+ in the mem search warning messages.
+
+* Fix a crash on subsetting of some Type1 fonts because of a temporary
+ buffer overrun.
+
+* Correct a crash on SVG text output when the 8th bit is set.
+
+* Fix the use (reference) of 8-bit glyphs in SVG mode when prologues:=3.
+
+* Fix the output of text strings that reference the character at index 0.
+
+* Use ".ps" as file extension for negative charcodes (backward compatility).
+
+* Metapost sometimes printed "mp_vacuous" instead of "vacuous".
+
+* Fix rounding of negative scaled and fraction values.
+
+* Restore the error for 'arctime' out-of-bounds.
+
+* Moved the "turningnumber algorithms do not agree" message out of reach
+ (now only printed if tracingchoices>2 )
+
+* Fix a problem with dash scaling during picture copying.
+
+* TFM header bytes were written out with an offset of one.
+
+* Updated the mptrap files.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.201:
+----------------------------------------------------------------------
+
+Bug fixes:
+
+* There was a bug where sometimes the outer contour of a glyph that was
+ asked for via 'glyph X of' was missing from te output, depending on
+ the path drawing order inside the Type1 font.
+
+* Handling of MPTEXPRE label prefix files was broken.
+
+* Font subsetting for 8-bit characters in Type1 fonts was broken.
+
+* The use of "%{outputtemplate}" inside "outputtemplate" now generates
+ an error.
+
+* The first letter of the input file name was swallowed in the log file.
+
+* There is some rudimentary support for infinite recursion trapping now,
+ to help prevent segfaults&crashes due to C call stack exhaustion.
+
+* An unlucky change in glibc made compilation fail on new GNU/Linux
+ systems due to multiple incompatible definitions of 'getline()'.
+
+* There was a bug in the handling of quoted external commands for
+ MPXCOMMAND | MPXMAINCMD | TEX.
+
+* The main input file's opening brace and filename were not shown in
+ the log file output.
+
+* Non-colored picture objects (clipping and setbounds paths) are now
+ ignored when the color part is asked from within "within", for
+ backward compatibility reasons.
+
+* The trip and trap files are now part of the distribution and the
+ mptrap files have been updated.
+
+* The standard web2c argv[0] mem file mimicri was broken: 1.200 was
+ always looking for "mpost.mem" even when called under another name.
+
+* The manual pages for "mpost" and "dvitomp" have been updated, and the
+ old "mp" manual page has been removed.
+
+* The first letter of any missing input file name was not shown in the
+ terminal error message.
+
+* Output files are now once again written in the current directory even
+ if an explicit source directory is given. This includes the creation
+ of mpx files, but some trickery is used so that up-to-date existing
+ mpx files from the source directory take precedence.
+
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.200:
+----------------------------------------------------------------------
+
+New features:
+
+* It is now possible to get the actual path drawing routines from a
+ font glyph. The syntax is :
+
+ q := glyph 113 of "cmr10";
+ q := glyph "one.oldstyle" of "lmr10";
+
+ "glyph" is a primary binary operator (like "subpath") that accepts
+ a string or number and a string, and the result is a picture.
+
+ The second argument is a tfm name. This will be combined with
+ a fontmap entry to find the font's PostScript source file.
+
+ If the first argument is a string, then it should be a Charstring
+ name in the postscript font source. If the first argument is
+ an integer, it is an index into the encoding of the font, and
+ the Charstring that is mapped to that index is taken (it follows
+ that numeric values have to be integers between 0 and 255).
+
+ The returned picture can be empty (if the tfm or the pfb or the
+ encoding or the Charstring was not found), otherwise it consists
+ of a list of 'fill' objects that use the the 'grey' color model.
+ Counterclockwise paths receive the grey value matching 'white',
+ clockwise paths 'black'.
+
+* MetaPost now supports string valued internal variables. Three of
+ these are predefined ("jobname", "outputformat", "outputtemplate"),
+ you can add more of them via "newinternal".
+
+ newinternal string s;
+ s := "hello";
+
+ The type of a new internal is either 'string' or 'numeric',
+ and defaults to numeric (this is for backward compatibility with
+ older versions of MetaPost). String internals are initialized to
+ the empty string, numeric internals are initialized to zero.
+
+* MetaPost now has a second backend that generates Scalable Vector
+ Graphics output. This new backend was requested by Dave Crossland, who
+ also provided the funding to make it possible. Dave, thank you again!
+
+ The default value of "outputformat" is "eps"; when you assign "svg"
+ you will get SVG output.
+
+ If you use text labels with SVG, you will probably also want to set
+
+ prologues:=3;
+
+ With this setting, MetaPost will convert the font into curves
+ (of course you also need a correct font map line, just as for
+ PostScript output).
+
+ With any other value of "prologues" you will simply get the SVG
+ default text font in a system-dependant encoding. This is unlikely
+ to be what you want!
+
+ A simple example:
+
+ outputformat := "svg";
+ outputtemplate := "%j-%c.svg";
+ beginfig(1);
+ fill fullcircle scaled 100 withcolor .4red;
+ endfig;
+ end.
+
+ In the lua bindings, there is the new figure method "svg()", that
+ gives back the SVG output string. This is subtly different from the
+ direct file output: the lua method does not prepend an XML declaration
+ (this makes embedded use of the generated XML easier).
+
+* The new internal string variable "outputtemplate" replaces
+ "filenametemplate". The big difference is that "outputtemplate"
+ is a true 'internal', so that you need a proper assignment.
+ On the positive side, this means that you can use its current
+ value with e.g. show and message.
+
+* "outputtemplate" has a new type of replacement: internal variable
+ names. Instead of the short "%j.%c", you could write:
+
+ outputtemplate := "%{jobname}.%{charcode}" ;
+
+ this type of replacement works for all internal variables,
+ including those defined via "newinternal".
+
+* There are two new numeric internals: "hour" and "minute".
+ (these are a consequence of the outputtemplate change)
+
+* The primitive "jobname" is now a string internal instead of a
+ special case. This implies you can assign to "jobname", but
+ such an assignment will only affect the picture output. The
+ job name for the purposes of log and mem file names is fixed
+ permanently at startup time and cannot be altered.
+
+* "mpost" can now pretend to be dvitomp. Either copy the executable
+ to the name "dvitomp", or pass the switch --dvitomp on the command
+ line.
+
+* The command line option --halt-on-error has been reinstated.
+
+* There is a new -s<internal>=<value> command line switch that can
+ be used to setup run time values. Such assignment will be executed
+ after initialization is complete (i.e. after mem file loading) but
+ before any other code is executed.
+
+ This works for all internal variables, including one defined
+ that may have been defined in the mem file via "newinternal".
+
+* "tracingstats:=1;" now prints the highest and total input levels.
+
+Bug fixes:
+
+* The turningnumber calculation had a rounding error in the internal
+ arithmetic that could cause incorrect numbers to be calculated
+ (typically resulting in a 'turning numbers do not match' error).
+
+* The parsing of command line arguments with options was broken.
+
+* Reading of files with 8-bit names has been fixed.
+
+* A patch by Melissa O'Neill fixes inclusion of some special Type1
+ formats.
+
+* There was a bug where, when "prologues:=3;", the lists of the
+ DocumentResources/DocumentSuppliedResources could appear in the eps
+ output partially uncommented.
+
+* Troff labels were completely broken in all MPlib-based versions.
+
+Other changes:
+
+* Many, many improvements to the manual and the tutorial. Sorry
+ Stephan, I don't know enough to list them all!
+
+* The old executable build system has been replaced by the new build
+ system from the TeXLive 2009 repository.
+
+* The MetaPost (and mplib) source code is now released under LGPL
+ instead of GPL, and uses a derivative of PyAvl instead of GNU libavl.
+
+* The web2c 'mktexfmt' feature is enabled for the program "mpost" once
+ again.
+
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.102:
+----------------------------------------------------------------------
+
+* Printing of 8-bit string characters has been fixed.
+
+* In previous versions, TFM files and PFB fonts would not be read
+ properly on big-endian machines (e.g. powerpc)
+
+* The MetaPost distribution now contains "A Beginner's Guide to
+ MetaPost for Creating High-Quality Graphics" by Troy Henderson
+ and Stephan Hennig. This tutorial replaces Hobby's mpintro.tex.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.101:
+----------------------------------------------------------------------
+
+This is just a bugfix release. The following bugs / problem areas in
+MetaPost 1.100 have been fixed / improved:
+
+* TFM file generation was completely broken.
+
+* The job name discovery on the commandline has been improved.
+
+* Under some (rare) conditions MetaPost forgot to create a log file.
+
+* Labels containing char0 were exported to PostScript incorrectly.
+
+* On Windows, the DVI file that is the result from the internal call
+ to TeX for btex .. etex lables was not deleted automatically.
+
+----------------------------------------------------------------------
+What is new in MetaPost version 1.100:
+----------------------------------------------------------------------
+
+CHANGES compared to the previous release, 1.005:
+
+* This version is based on MPlib, the C conversion of MetaPost.
+
+ The one user-visible change is that the btex ... etex
+ label conversion is now handled internally instead of via
+ the external "mpware" programs. These programs are therefore
+ no longer distributed.
+
+* There is a new manual, mplibapi.pdf, that describes the internal
+ interface to MPlib.
+
+* The file 'mpintro' is no longer distributed because it is
+ obsolete (it has been that way for some time).
+
+* The distribution now includes Dan Luecking's mpsproof.tex.
+
+
+CHANGES compared to the previous beta, 1.091:
+
+* The DVI -> mpx converter was bugged when virtual fonts were used.
+
+* MP could crash when a string was added to the string pool that
+ was too large to fit.
+
+* The string pool compaction routine was called much too often, thus
+ preventing unnecessary slowdowns.
+
+* Various problems with uninitialized option settings and missing mem
+ files or pfb files have been fixed.
+
+* There was a line buffer overrun possible in the file reader.
+
+* mpost now honours --recorder and --file-line-error.
+
+* MP now accepts file names with paths (separator is /) and with
+ embedded spaces (using " for quoting)
+
+* There could be empty lines in the PS output.
+
+* Full 8-bit fonts (i.e. font using character slot 255) could create
+ an eternal loop.
+
+* The handling of equations with addition or substractions between two
+ unknowns in the right hand side was wrong.
+
+* The first line of the PS font encoding output could be broken
+ inbetween a glyph name and its preceding slash.
+
+* Font inclusion in the PS backend would fail for all fonts that had
+ glyph ids using the 8th bit.
+
+
+----------------------------------------------------------------------
+What is new in MetaPost beta version 1.091:
+----------------------------------------------------------------------
+
+* Dash lists were interfaced incorrectly by the lua bindings.
+
+* The Type 1 Font inclusion in the previous version produced invalid
+ subsets.
+
+* The configure script now also checks for sys/time.h
+
+* The error message you get for invalid mem files now mentions the
+ name of the file as well as the nature of the problem.
+
+----------------------------------------------------------------------
+What is new in MetaPost beta version 1.090:
+----------------------------------------------------------------------
+
+This MetaPost release is based on MPlib. For those of you who are not
+aware of the MPlib project yet:
+
+MPlib is the name of the new, revamped version of the MetaPost
+interpreter. It is implemented in Cweb, and internally consists
+of a core library, an mpx generation library, and a frontend
+driver program (mpost).
+
+There are no changes to the MetaPost language, but nevertheless there
+are some minor differences with the last pascal-web based version of
+MetaPost (1.005):
+
+* The MPlib distribution is released under the GPL version 2 or,
+ at your option, any later version.
+
+* The commandline is slightly different, run mpost --help for details.
+
+* The mem file format is changed, you have to regenerate any
+ existing ones.
+
+* The new mpx generation library includes the label generation
+ functionality that was previously provided by 'makempx', and
+ this internal code will be used instead of an external program.
+ That is, unless the MPXCOMMAND variable is set in the environment
+ or texmf.cnf. The 'mpware' programs became obsolete and are no
+ longer included in the distribution.
+
+* Most of the memory configuration variables from texmf.cnf
+ have become obsolete due to dynamic reallocation. The four remaining
+ ones are 'main_memory', 'hash_size', 'max_in_open', 'param_size'.
+ These are only taken into account at mem generation time, the
+ values are stored in and reloaded from the mem file.
+
+* The core MPlib library does not interpret an initial '&' as anything
+ special and it does not support re-initialization using a different
+ mem file either. The command line program mpost _does_ interpret '&'
+ as an alias for the -mem switch to preserve (some) compatility.
+
+* The MPlib distribution includes lua script language bindings.
+
+Following are the NEWS items for the previous beta releases of MPlib.
+
+----------------------------------------------------------------------
+What is new in the beta release of MPlib 1.090:
+----------------------------------------------------------------------
+
+* The lua bindings to MPlib are added to the distribution, and
+ build.sh can now build an mplib.so loadable module for lua
+ (this needs an installed lua 5.1 distribution)
+
+* Some internal macros are renamed so that the exported C structure
+ fields could have better names, and a new document (mplibapi.tex)
+ provides the documentation of the C api and Lua bindings.
+
+* The texmf and manual trees are now included again.
+
+* (un)dumping mem files is delegated to a separate cweb source file.
+
+* All gcc-isms in the build and configure scripts have been removed.
+
+* The kpathsea library is updated.
+
+----------------------------------------------------------------------
+What is new in the beta release of MPlib 1.085:
+----------------------------------------------------------------------
+
+* Determination of the mem name to use in non-ini mode is now much
+ closer to the web2c approach.
+
+* There is now a magic word in the beginning of the mem file to make
+ sure it is written by the correct version of MPlib.
+
+* Fixed the disappearing comment sign in the to-be-typeset document
+ created by the mpx generation subsystem.
+
+* Various identifiers have been renamed to avoid clashes (that prevented
+ the source from building correctly on many platforms)
+
+* A great many small changes and fixes have been added after running
+ splint on the generated C source.
+
+
+----------------------------------------------------------------------
+What is new in the beta release of MPlib 1.080:
+----------------------------------------------------------------------
+
+* The MPlib distribution is released under the GPL version 2 or, at
+ your option, any later version. The copyright statements in the source
+ files have been updated to reflect this.
+
+* The mpost program banner now contains the kpathsea version, and no
+ longer mentions the fact that the source is now cweb at all.
+
+* The mpost program once again supports 'E' error responses.
+
+* There are some minor internal API changes, but there is still no
+ documentation for the API, so that is not very interesting yet.
+
+
+----------------------------------------------------------------------
+What is new in the beta release of MPlib 1.060:
+----------------------------------------------------------------------
+
+* The MPlib distribution is released under the GPL version 2.
+
+* This release is the first that replaces the old metapost distribution
+ completely. The executable is now named 'mpost' with engine name
+ 'metapost'.
+
+* The release now includes a cweb implementation of the makempx
+ functionality that is linked into the mpost executable.
+ This internal code will be used unless the MPXCOMMAND variable is set.
+ Because of this functionality, the mpware directory is no longer
+ included and the standalone programs 'makempx', 'newer', 'mpto',
+ 'dvitomp' and 'dmp'. are no longer maintained.
+
+* This is the first development release of the new cycle, and contains
+ all of the functionality of Metapost 1.005. The mpost version is now
+ 1.060, and the special version number for the cweb version has been
+ removed from the banner.
+
+----------------------------------------------------------------------
+What is new in the alpha release of MPlib (0.20.0):
+----------------------------------------------------------------------
+
+* Two bugs in MP 1.002 were fixed by Giuseppe Bilotta, both fixes
+ are about polygonals pens and will be included in the upcoming
+ MP 1.003 release also.
+
+* It is now possible to ask for the envelope of a path drawn as
+ traced by a (non-elliptical) pen:
+
+ path p,q;
+ p = fullcircle scaled 30;
+ q = envelope pensquare of p;
+
+* There is a lua interface now, and it is already used by luatex.
+
+ To play with this, currently the best solution is to fetch the
+ 0.25.0 beta of luatex: http://foundry.supelec.fr/projects/luatex
+ This embeds MPlib 0.25.0 as well as its documentation.
+
+* Many bugs were fixed.
+
+----------------------------------------------------------------------
+What is new in the alpha release of MPlib (0.10.0):
+----------------------------------------------------------------------
+
+* The source is converted to cweb, and split into a library part
+ (mpdir/lib/*.w) and a frontend executable (mpdir/mpost.w).
+
+* The front end executable is named "newmpost", this takes
+ care of configuring the MPlib library via C code, and uses
+ kpathsea for file searching. There is no change file involved,
+ and the web2c runtime library is not used.
+
+* Some of the internal arrays now grow dynamically when needed:
+
+ * the input buffer
+ * the string pool and number of strings
+ * the font memory and number of fonts
+ * the number of "readfrom" and "write" files
+ * the path segment size
+ * the input nesting stack
+ * the number of new internals
+ * the TFM writing arrays (but these are limited by TFM format)
+
+ Still not doing that (so these can only be changed in --ini mode):
+
+ * the main memory
+ * the hash size
+ * the number of simultaneous macro parameters
+ * the level of "input" file nesting
+
+* The following command-line options are ignored by the front-end
+ command (for now):
+
+ -[no-]file-line-error
+ -halt-on-error
+ -output-directory=
+ -[no-]parse-first-line
+ -recorder
+ -translate-file=
+ -8bit
+ -T
+
+ The other web2c command-line options should work as normal.
+
+* the mpware tools are not in this distribution, their functionality
+ will eventually be assimilated into the frontend application.
+
+* the build process depends on a local "ctangle" command being in the
+ path, for now. The confiration and building system is not yet complete.
+
+* API documentation is still missing, but the MetaPost input language
+ has not changed.
+
+
+----------------------------------------------------------------------
+What is new in version 1.005:
+----------------------------------------------------------------------
+
+* In MetaPost 1.004, mpost --version still incorrectly reported 1.003
+
+* C Compilation of MetaPost 1.004 was broken on MacOS X 10.5
+
+* The sources package did not contain mpboxes.pdf
+
+* Some last-minute fixes to the manual
+
+
+----------------------------------------------------------------------
+What is new in version 1.004:
+----------------------------------------------------------------------
+
+* The picture color component commands misbehaved in 1.003:
+ the current (default) colormodel was not taken into consideration,
+ so all colors had to be explicit for "redpart" etc. to work.
+ (this bug is the one broke the graph.mp package)
+
+ In 1.004 for "defaulted" colors, the suitable value in the current
+ (default) colormodel is returned without any errors. This change
+ also reverts to silently defaulting a 'black' color when asking
+ for the redpart etc. of an object that cannot be colored at all.
+
+* The picture color component commands misbehaved in 1.003 in
+ a different manner also: the defaults for uninitialized CMYK
+ color picture parts were still assuming 'black' was defined as
+ (1,1,1,1) instead of as (0,0,0,1).
+
+* The macro Gwithpc_ in the graph.mp package did not work properly
+ with non-rgb colormodel objects.
+
+* plain.mp has a new macro, 'colorpart', that returns the color
+ parts of a graphical object within a picture in a form suitable
+ for feeding it back to 'withcolor'.
+
+* The latest kpathsea library from TeXLive is included.
+
+* There is now a separate manual for the boxes package (mpboxes.pdf).
+
+
+----------------------------------------------------------------------
+What is new in version 1.003:
+----------------------------------------------------------------------
+
+* Polygonal pens now work better (bug #3 and #7 at supelec.fr).
+
+* When asking for a color part in a picture object, the color models
+ now have to match each other, otherwise an error will be reported
+ and the return value will be set to a 'black' part.
+
+* The Makefile fragment (metapost.mk) now defines a separate mpost
+ target for better integration in TeXLive.
+
+* There was a bug in the internal handling of withprescript and
+ withpostscript, resulting in incorrect output when paths using
+ such scripts were stored in picture variables.
+
+* A newline was missing from the PostScript output when the
+ procset internal variable was set, so the first line of that
+ accidentally became a PostScript comment.
+
+* Applicable changes from Knuth's updates for MetaFont 2.718281
+ are incorporated.
+
+* Mpto did not play nice with %&<format> verbatimtex lines, it now
+ automatically tries to detect comment-lines.
+
+* Dvitomp 1.003 has higher limits for some internal constants like
+ the number of allowed fonts in DVI files.
+
+* The manual is improved.
+
+
+
+----------------------------------------------------------------------
+What is new in version 1.002:
+----------------------------------------------------------------------
+
+* Version 1.001 introduced a memory allocation error in mpto that could
+ result in the program looping endlessly
+
+----------------------------------------------------------------------
+What is new in version 1.001:
+----------------------------------------------------------------------
+
+* The default cmyk 'black' color now uses only black, not all four
+ ink colors (after a discussion on the mailing list).
+
+* Some issues were reported with the new turningnumber algorithm,
+ all known problems are now fixed.
+
+* Gábor Braun discovered that mpost did not always download the font
+ encodings into all the created output files.
+
+* Akira Kakuto and Hartmut Henkel found some small issues in mpto
+ regarding trailing and leading whitespace.
+
+* A fix for the 'Helvetica' entries in trfonts.map was provided by
+ Werner Lemberg, and Michail Vidiassov supplied two extra font
+ entries for troff.map (Symbol and ZapfDingbats). Karl Berry
+ provided the new file troff-updmap.map, to be used by the updmap
+ tool in texlive.
+
+* Mpost now supports web2c's --output-directory option.
+
+* Any warnings about missing fonts and characters are now always
+ written to the terminal as well as to the log.
+
+* Now that makempx is a C program, it needed a different install line
+ in build.sh. Also, Olaf Mersmann contributed a patch to recognize
+ 'gmake' in build.sh
+
+* Luigi Scarso found some typing errors in the web source that prevented
+ clean weaving of the source.
+
+* Stephan Hennig fixed a number of problems in the manual (mpman.tex)
+ and the introduction paper (mpintro.tex). He also wrote new sections on
+ how to preview metapost graphics and on how to use metapost graphics
+ inside other documents. On top of that, the manual is now hypertext-aware,
+ and fixes for a whole series of small problems have been applied.
+
+----------------------------------------------------------------------
+What is new in version 1.000:
+----------------------------------------------------------------------
+
+* The use of DSC (document structuring) comments has been
+ been cleaned up, thanks to comments by Michail Vidiassov.
+
+* By setting prologues to 2 or 3, you can ask MetaPost to
+ reencode and include the used labels fonts in the output,
+ thus creating proper Encapsulated PostScript files even
+ if labels are present.
+
+* Support for greyscale and cmykcolor models is added.
+
+* The new drawing options "withprescript" and withpostscript"
+ allow the user to attach PostSCript special text to a specific
+ drawing object.
+
+* Setting the new internal "mpprocset" to 1 will make MetaPost
+ create a somewhat extended preamble that defines shortcuts
+ for the postscript commands (e..g "l" instead of "lineto").
+ For big images, this can help shrink the output a bit.
+
+* The pool file is now integrated in the executable, so there
+ is not separate 'mp.pool' anymore, except at build time.
+
+* Groff support is redone, and dmp now uses kpathsea searching.
+ Groff related changes are thanks to the efforts of Werner
+ Lemberg and Michail Vidiassov
+
+* makempx is now a compiled executable on all systems,
+ thank you Akira Kakuto
+
+* The error for 'special's longer then 255 characters
+ is removed, so specials can now be of any length.
+
+* There is new turningnumber implementation that attempts
+ to find the mathematically correct "turningnumber" of a
+ path. The formulae are derived from a mailinglist discussion
+ between (especially) Dan Luecking and Giuseppe Bilotta.
+
+* The manual is updated and modernized. It is currently
+ maintained by Stephan Hennig and Troy Henderson.
+
+------------------------------------------------------------------
+Changes in version 0.920:
+----------------------------------------------------------------------
+
+* Fixed a long-standing bug in web2c where changing values of the
+ memory_size setting in web2c could cause crashes and other random
+ problems. The memory array size is now written to the dump file
+ and loading is aborted if the values do not match.
+* Implement configurable figure output filename templates.
+* Implement cmyk, greyscale, and marking only color models.
+* The mpost executable is now version 0.920
+* mpost no longer autoconverts r==g==b colors to grayscale in the
+ postscript output.
+
+----------------------------------------------------------------------
+Changes in version 0.902:
+----------------------------------------------------------------------
+* Fix a bug in mpto resulting in correctly placed labels (with
+ thanks to Dan Luecking)
+* Fix a bug blocking compilation of dmp on MacOSX
+* The mpost,dmp,mpto executables are now version 0.902
+
+
+----------------------------------------------------------------------
+Changes in version 0.901:
+----------------------------------------------------------------------
+* A corrected bugfix for bug item 3 from version 0.9 (the old fix
+ made metapost fail the trap test)
+* Included mpost.mp for mem generation
+* Updated the trap test output.
+* The mpost executable is now version 0.901
+
+----------------------------------------------------------------------
+What is new in version 0.9:
+----------------------------------------------------------------------
+1. There is a new internal quantity called mpversion that reports the
+ current metapost version, and the version information is also written
+ to the PostScript file.
+2. The LaTeX sources of the mpman, mpintro, and mpgraph manuals have
+ become part of the distribution package.
+3. TEX.mp now has TeX format support through a pair of macros called
+ TEXPRE() and TEXPOST(). This llows you to process the contents of
+ the TEX() macro with, for example, LaTeX (instead of plain TeX).
+ An example is given in the manual.
+4. metapost now writes a %%HiReSBoundingBox comment
+5. The EPS output no longer contains actual spaces within PostScript
+ strings as for example output by label("a space"), but their
+ octal escape (\040) instead.
+6. The EPS output now also has a %%BeginProlog DSC comment
+ as well as %%EndProlog
+7. The comments in the Web source have been changed to point out
+ that on modern machines, acquiring the random seed has actually
+ become a system-dependant operation (a granularity of whole seconds
+ is not small enough on new machines).
+8. The 'newer' command now accepts more than 2 arguments, testing
+ each of the files in turn.
+
+----------------------------------------------------------------------
+Bugfixes in version 0.9:
+----------------------------------------------------------------------
+1. Documentation improvements: all known errata and typos have been
+ removed, better explanations of e.g. dash patterns and dotlabel have
+ been provided, and a number of omissions has been rectified.
+2. The BoundingBox was not computed correctly when a filldraw command
+ with a noticeable pen size was used at the edge of the picture.
+3. Paths starting with degenerate constructions like (0,0)--(0,0)--(0,0)
+ could overflow memory.
+4. The PostScript output could accidentally contain 8-bit characters
+ within PostScript strings in previous versions because a test was
+ shared between terminal printing and PostScript printing.
+5. A bug has been found in the assignment of serial numbers to independant
+ variables in metafont 2.71828. This bug affected MP as well, and the
+ same patch has been applied.
+6. The turningnumber was sometimes wrong in unexpected ways. The new
+ implementation is still sometimes wrong (when there are strange path
+ segments involved), but in a much more predictable way: the new code
+ always draws straight lines between the actual points, and calculates
+ the turningnumber based on that path instead of the actual path. The
+ effect is that cusps and loops within segments are now completely
+ ignored. A more thorough fix of turningnumber is planned for the
+ next release.
+7. There was an 'off by one' error in dvitomp wrt. the interpretation
+ of virtual fonts.
+8. mpto uses a new TeX macro for the generation of labels, making it
+ more robust wrt. strange user code within the actual label text.
+9. A missing colon in boxes.mp has been added
+10. A missing save in mfplain.mp has been added
+11. The generisize in boxes.mp has been fixed so that it now accepts [[ as
+ a valid variable name
+
+----------------------------------------------------------------------
+Version 0.641:
+----------------------------------------------------------------------
+The only change was to fix the code for transforming a picture that
+contains a filldraw. Version 0.64 introduced a bug that caused an
+inappropriate memory reference in that case.
+
+----------------------------------------------------------------------
+What is new in Version 0.64:
+----------------------------------------------------------------------
+1. A new primitive command closefrom filename closes a readfrom file
+ so that subsequent calls to readfrom with that file name will go back
+ to the beginning of the file.
+2. The ^^ notation for unprintable characters is now used only when printing
+ on the terminal or the log file. Internal computations and the write
+ command are all 8-bit clean. (This is partly due to material in mp.ch
+ that changes the initialization of the xchr array. Without these
+ system-dependent changes, the write command would map all non-ascii
+ characters to spaces.)
+3. Arithmetic overflow during a comparison such as 20000>-20000 is now
+ ignored. This avoids extraneous error message when using the graph.mp
+ macro package.
+4. Transformations with negative determinants now work properly on pictures
+ drawn with polygonal pens.
+5. When the readfrom operator is applied to a file that does not exist,
+ an attempt to close a non-open file could cause problems in some
+ implementations. This has now been fixed.
+6. Using draw picture_expression withpen where the picture_expression
+ was a scaled picture containing dashed lines, the dash lengths would
+ change. This bug has been fixed.
+7. The dashpart operator could return an invalid picture or a picture that
+ is not properly scaled. This has also been fixed.
+8. The |char_base| variable could become negative when using fonts that
+ do not start at character 0. There was also bad Pascal code in function
+ b_open_in. This has all been fixed.
+9. Dvitomp has been fixed to avoid a font data structure problem that
+ could cause some characters to come out in the wrong font when you
+ mix virtual and non-virtual fonts.
+10. Dvitomp now correctly prints font names when there is a checksum
+ mismatch, and it aborts instead of just printing an error if a tfm
+ or vf file is bad.
+11. In plain.mp, the drawdblarrow macro now uses filldraw so that it works
+ better with large pen sizes.
+
+----------------------------------------------------------------------
+Version 0.632:
+----------------------------------------------------------------------
+When prologues is negative, the output files use full precision for
+coordinates in "%%BoundingBox" comments. In btex..etex blocks,
+"number too large" and "invalid character" errors are suppressed.
+The result of btex..etex is now guaranteed to be in a setbounds path
+so that a for...within iteration will always treat it as a unit.
+
+There are also some obscure bug fixes involving string compaction when
+scanning a file name or when mp is compiled in debug mode. Some possible
+identifier name conflicts and range check errors have also been fixed.
+
+
+----------------------------------------------------------------------
+Version 0.631:
+----------------------------------------------------------------------
+This version fixes an obscure bug that could cause certain perfectly valid
+strings to be printed as "???" or " NONEXISTENT". It also includes a minor
+fix to the PATHEXPAND code that prevents running out of file descriptors.
+
+
+----------------------------------------------------------------------
+What is new in Version 0.63:
+----------------------------------------------------------------------
+1. Backslashes in the PostScript output are rendered correctly. They used
+ to come out as (\) instead of (\\).
+2. Recycling an independent variable should no longer cause spurious overflows.
+ (This bug was recently found in mf.web.)
+3. Pythagorean addition should now be faster in certain trivial cases.
+4. Rotating text by arbitrary angles should no longer cause bad PostScript
+ output. The problem was that arguments to "fshow" could be inaccurate.
+5. Obscure bugs inherited from mf.web are now fixed. These involve
+ balancing parentheses showing on the terminal, reporting the correct
+ line number in case of buffer overflow, and removing spurious reference
+ counts that could effect end-of-job statistics.
+6. Fonts with ec=255 should no longer cause mp's PostScript output routines
+ to go into a loop.
+7. When mp's string mechanism was heavily used, file names could occaisonally
+ be printed on the terminal and log file as "(?)". This has been fixed.
+8. Setting PATHEXPAND in site.h causes mp, dvitomp and dmp to understand "//"
+ in path variables as "search multiple levels of subdirectories". This is
+ for compatibility with recent versions of the Web2c TeX distribution.
+9. A typo in mpware/makempx and mpware/troffmpx has been fixed. Previous
+ versions of these scripts would not run on some systems.
+10. Data files *.d have been added to the doc directory. These are used by
+ doc/mpgraph.mp which generates figures for "Drawing Graphs with MetaPost".
+11. Typos in mpintro.tex and mp.web's TeX material have been fixed.
+12. Files examples.mp, mpintro.tex and mpintro.bib have moved from mplib to
+ the doc directory.
+13. The author's email address now appears in the README file.
+
+
+----------------------------------------------------------------------
+Macros added to the mplib directory between Versions 0.50 and 0.62:
+----------------------------------------------------------------------
+rboxes.mp is a slightly more general version of boxes.mp
+TEX.mp provides a way of running tex dynamically instead of as a pre-processor
+graph.mp, format.mp, and sarith.mp are documented in doc/mpgraph.ps
+(This is the same as ftp://netlib.att.com/netlib/att/cs/cstr/164.ps.Z)
+marith.mp, string.mp, texnum.mp, and troffnum.mp are low-level packages
+used by graph.mp, format.mp, and sarith.mp.
+
+
+----------------------------------------------------------------------
+Other minor bug fixes subsequent to Version 0.60
+----------------------------------------------------------------------
+1. plain.mp has been fixed so that the x**y works properly when x<0 and y is
+ a negative integer.
+2. Programs mptotex.c and mptotr.c which extract btex..etex material have been
+ fixed so they work properly with input files that do not end with a newline
+ character.
+3. Program dmp.c which handles troff output from btex..etex blocks has been
+ modified to avoid outputting any non-ASCII characters that the C function
+ isprint() accepts.
+4. Program dmp.c no longer gets troff graphics specials confused with text.
+ This seldom matters because btex..etex blocks are unlikely to contain
+ troff graphics.
+5. Pictures containing clipped subpictures could come out with some colors
+ in the subpicture wrong.
+6. Colors in PostSript output were not being restricted to the standard 0..1
+ range.
+7. Transforming a path or a pen should no longer generate extraneous overflow
+ errors in certain unusual situations.
+8. Drawing with a degenerate 2-vertex polygonal pen such as penrazor should
+ no longer cause an infinite loop in certain unusual situations.
+9. There were some bugs in the mfplain macros. (These macros are designed
+ to similate plain METAFONT.) The drawing and filling macros now apply
+ currenttransform to the path but not the pen rather than vice versa.
+ The predefined modes now set o_correction to 1.0.
+10. For security reasons, mp can no longer read or write files whose names
+ begin with '.'
+
+
+----------------------------------------------------------------------
+Changes to the MetaPost language between Version 0.50 and Version 0.60
+----------------------------------------------------------------------
+1. New operator `readfrom <filename>' and new command
+ `write <string expression> to <filename>' do file I/O. Plain defines
+ a special string EOF that readfrom returns to indicate end-of-file
+ and write..to understands as well.
+2. New iteration type `for p within <picture expression>: <loop text> endfor'
+ iterates through the interior components of the picture. An `interior
+ component' is a single pen stroke, filled outline, or piece of typeset
+ text. A part of the picture enclosed in a clipping or setbounds path
+ also counts as an interior component. If the whole picture is enclosed
+ in such a path, the for..within iteration looks inside. Note that a
+ picture generated by btex..etex is enclosed in a setbounds path.
+3. The length operator now applies to pictures. It returns the number of
+ interior components.
+4. New boolean operators stroked, filled, textual, clipped, bounded test
+ the first component of a picture. A picture enclosed in a clipping or
+ setbounds path counts as a single component.
+5. Part extraction operators now work for pictures. Standard operators
+ redpart, greenpart, bluepart apply to the color of the first component
+ and xpart, ypart, xxpart, xypart, yxpart, yypart extract parts of the
+ tranformation that has been applied to a text component. If `textual p'
+ is false, the transform components are all zero; if `clipped p' or
+ `bounded p' is true, the color parts are all zero. Additional operators
+ fontpart, textpart, pathpart, penpart, dashpart extract other information
+ from the first component of a picture. They all return null values when
+ the first component has the wrong type: fontpart and textpart return
+ null strings; pathpart returns the path (0,0); penpart returns nullpen;
+ and dashpart returns nullpicture.
+6. The construction `dashed nullpicture' is now a no-op. It used to be
+ an error.
+7. The clip and setbounds statements used to ignore operations on empty
+ pictures. Now they do not.
+8. Structuring comments in the PostScript output are now based on EPSF-3.0
+ as described in the 2nd Edition of the PostScript Reference Manual.
+ When prologues is 0, some structuring comments are included but the
+ output is not flagged a `conforming document'. Previous versions of
+ MetaPost behaved similarly but used slightly different structuring
+ comments.
+9. When warningcheck is 0, numeric tokens and results from the hex and
+ oct operators can be as large as 32767.99998. The old limit of about
+ 4096 applies only when warningcheck is positive.
+10. Various optimizations should make the output a little more compact.
+11. For PostScript engines that obey the scan-conversion rules documented
+ in the 2nd edition PostScript Language Reference Manual, hrules and
+ vrules in btex..etex blocks should now come out to exactly the right
+ number of pixels. The change affects all pen strokes drawn in MetaPost
+ It is implemented via PostScripts dtransform and idtransform operators.
+12. A bug involving setbounds and MetaPost's corner operators has been fixed.
+13. Degenerate elliptical pens no longer cause PostScript to divide by zero.
+14. Fixed a very obscure bug involving readstring and end-of-file.
+15. String compaction statistics are now printed correctly when the job
+ terminates with tracingstats positive.
+
+
+
+----------------------------------------------------------------------
+Changes to the source files between Version 0.50 and Version 0.60
+----------------------------------------------------------------------
+
+CHANGES to ./README.MP
+The installation instructions should now be clearer. They also explain
+how to cope with verious versions of WEB2C.
+
+CHANGES to ./site.h
+I removed unused entries and clarified instructions in commentary material.
+Confusing comments about possibly merging it with the WEB2C version of site.h
+were removed--I think such merging is a bad idea.
+
+CHANGES TO ./Makefile, mp/Makefile, mpware/Makefile:
+Improved default settings, simplified the `install' recipe,
+fixed a few missing depencies, portability problems, etc.
+
+RENAMED FILES
+ mp/mp.defines, mpware/mpware.defines, mpware/dvitompext.c
+TO mp/mp.def, mpware/mpware.def, mpware/dvimpext.c
+(The names also changed in the Makefiles and convert scripts)
+
+CHANGES TO mp/mp.web, mp/mp.ch, mp/mp.def, mp/mpext.c:
+Lots of new features were added as noted above. The only new system-
+dependencies are for `readfrom' and `write...to'.
+The change file now increases max_read_files; it doesn't bother with
+max_write_files, but perhaps it should. There is a new change entitled
+"Path selector for..readfrom file". From the web2C sources I borrowed
+a change "`logname' is declared in <unistd.h> in some systems". I also
+added a PASCAL-like eof() routine to mpext, removed a change entitled
+"avoid using eof() in read_psname_table" and added a new change
+"[48.1199] `eof'...[in read_mem_file]".
+
+Reorganization of math routines in the mp directory:
+I moved the floating-point math routines from mpext.c to mpath.c. A
+C-language version of the standard math routines was moved from mpmath.c
+to a new file pmath.c for use in mathtest only. This required chages to
+mathtest.c and time.c (also used only for mathtest). The point of all
+this is that there is now just one copy of the floating-point math routines
+and it is used for mathtest and (optionally) for mp itself.
+
+Routines in doc and mp/trapdir:
+The output was updated to Version 0.60. Another test file mptrap.mp
+tests new features. There have also been minor updates to the manual,
+although the new features for Version 0.60 are not included yet.
+
+CHANGES to macros in mplib:
+A minor change to boxes.mp should make it more robust. Changed default
+setting of tracinglostchars in mfplain.mp and plain.mp. Added a string
+constant EOF to plain.mp for use with readfrom and write..to.
+Changed mproof.tex to make it more portable as suggested by Knuth.
+
+CHANGES to mpware/dvitomp.web, mpware/dvitomp.ch:
+The web file was changed to output rules as horizontal or vertical
+penstrokes with butt endcaps. This also affected dvitomp.ch. Also in
+dvitomp.ch, put terminal output on stdout instead of stderr and require
+the output file to be given on the command line.
+
+CHANGES to mpware/makempx, mpware/troffmpx:
+Added comments explaining what path names need fixing. Portability improvements
+and dvitomp's output change affect makempx only.
+
+CHANGES to mpware/mptotex.c mpware/mptotr.c mpware/testex.err mpware/testex.mp:
+Ignore an initial newline in the TeX (or troff) material to avoid generating
+a blank line in the output file. The test file now covers this case.
+
+CHANGE to mpware/newer.c
+Minor changes to make it compile in strict ANSI/POSIX environments.
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/Zpravodaj2009-4.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/Zpravodaj2009-4.pdf
index 148708f1e47..148708f1e47 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/Zpravodaj2009-4.pdf
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/Zpravodaj2009-4.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/jdbug.png b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/jdbug.png
index a1dbfe412a3..a1dbfe412a3 100644
--- a/Master/texmf-dist/doc/metapost/featpost/doc/jdbug.png
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/jdbug.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/tb88henderson.pdf b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/tb88henderson.pdf
new file mode 100644
index 00000000000..e012ed259ee
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/doc/otherinfo/tb88henderson.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/antimattermeteor.mp b/Master/texmf-dist/doc/metapost/featpost/example/antimattermeteor.mp
index 6d1d06e59eb..473ab499a1d 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/antimattermeteor.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/antimattermeteor.mp
@@ -1,19 +1,10 @@
% antimattermeteor.mp
% L. Nobre G.
-% 2008
+% 2014
input featpost3Dplus2D;
-% bash: export TEX=latex
-% tcsh: setenv TEX latex
-
-%prologues := 0;
-
-% verbatimtex
-% \documentclass{article}
-% \usepackage{beton,concmath,ccfonts}
-% \begin{document}
-% etex
+prologues := 1;
f := (30,0,0);
Spread := 100;
@@ -23,15 +14,18 @@ inidist = 10;
timestep = 0.1;
Gfactor = 2;
vprobe = 2.2;
-numeric numsteps, numtries, diststep, i, sigma;
-color inipos, inivel, dstp;
+numeric numsteps, numtries, diststep, i, sigma, sigmang, angl;
+color inipos, inivel, dstp, veloc;
path traject;
+pen bluepen, redpen;
+bluepen = pencircle scaled 0.9mm;
+redpen = pencircle scaled 0.55mm;
def gravitfield( expr relatposprobe ) =
( Gfactor*relatposprobe/((conorm( relatposprobe ))**3) )
enddef;
-vardef scalarfu( expr index ) =
+vardef parabol( expr index ) =
traject:=trajectorypath(
numsteps,
inipos+index*dstp,
@@ -40,25 +34,37 @@ vardef scalarfu( expr index ) =
draw traject;
enddef;
+vardef hiperbo( expr veloc ) =
+ traject:=trajectorypath(
+ numsteps,
+ inipos,
+ veloc,
+ timestep)(gravitfield);
+ draw traject;
+enddef;
+
beginfig(1);
numtries = 36;
numsteps = 95;
sigma = 3.15;
+ sigmang = 16;
diststep = sigma/numtries;
dstp = (0,0,diststep);
inipos = (0,-inidist,0);
inivel = (0,vprobe,0);
- drawoptions( withcolor blue );
+ drawoptions( withpen bluepen withcolor blue );
for i=-numtries upto numtries:
- scalarfu( i );
+ parabol( i );
+ endfor;
+ drawoptions( withpen redpen withcolor red );
+ for i=-numtries upto numtries:
+ angl := i*sigmang/numtries;
+ veloc := vprobe*(0,cosd(angl), sind(angl));
+ hiperbo( veloc );
endfor;
drawoptions();
fill fullcircle scaled (4cm) shifted (rp(black));
produce_auto_scale;
endfig;
-% verbatimtex
-% \end{document}
-% etex
-
end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/balllauncher.mp b/Master/texmf-dist/doc/metapost/featpost/example/balllauncher.mp
index c585a52cc43..aa945d745d7 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/balllauncher.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/balllauncher.mp
@@ -1,34 +1,38 @@
% balllauncher.mp
% L. Nobre G.
-% 2007
+% 2014
prologues := 1;
-beginfig(1);
- numeric tlen, thig, plen, phig, llen, lhig, pray, sray, wray, lray;
+verbatimtex \documentclass{article}\begin{document} etex
+
+beginfig(9);
+ ahlength := 8mm;
+ ahangle := 24;
+ numeric tlen, thig, plen, phig, llen, lhig, pray, sray, wray, tang;
numeric u, gmar, lang, hlen, rlen, pmal, pmah, aray, alim, aste, alen;
pen basepen, outerpen;
- picture mydash;
+ picture mydash, currpic[];
u = 2.5mm;
basepen = pencircle scaled 0.35u;
outerpen = pencircle scaled 1.1u;
mydash = dashpattern( off 1.5u on 1.2u off 1.5u);
pickup basepen;
gmar = 0.65u; % margem de bordadura
- lang = 35; % angulo do lancador
+ lang = 45; % angulo do lancador
+ tang = 45; % angulo da tabua (10)
hlen = 70u; % comprimento da linha horizontal
- tlen = 80u; % comprimento da tabua
+ tlen = 120u; % comprimento da tabua
thig = 6u; % altura da tabua
plen = 60u; % comprimento da placa
phig = 35u; % altura da placa
pmal = 20u; % parte da placa que fica em cima da tabua
pmah = 15u; % parte da placa que fica abaixo da horizontal
llen = 60u; % comprimento da lancador (na inclinacao zero)
- lhig = 12u; % altura do lancador (na inclinacao zero)
+ lhig = 15u; % altura do lancador (na inclinacao zero)
pray = 2u; % raio dos cantos arredondados da placa
- sray = 2.7u; % raio da marca da esfera no lancador
+ sray = 5.7u; % raio da marca da esfera no lancador
wray = 1u; % raio do peso de marcacao do angulo
- lray = 3u; % raio da ponta do gatilho do lancador
rlen = 20u; % comprimento da cordinha que segura o peso de marcacao
alim = 45; % angulo limite do tansferidor
aste = 5; % divisao da escala do transferidor
@@ -46,7 +50,7 @@ beginfig(1);
(-pray,-pmah)...(0,pray-pmah)---cycle;
a = buildcycle( fullcircle rotated (-10), dir(90+alim)--origin--right );
numeric auxa, auxb, aucc;
- auxa = aray+5*gmar-llen+sray;
+ auxa = aray+3*gmar-llen+sray;
auxb = 0.5*lhig-2*gmar;
z0 = (auxa,auxb);
sp = fullcircle scaled (2*sray) shifted z0;
@@ -59,18 +63,53 @@ beginfig(1);
for i=aste step aste until alim-aste+90:
draw (aray-gmar)*dir(i)--(aray-gmar-alen)*dir(i);
endfor;
- z1 = rlen*dir(90-lang);
+ z1 = rlen*dir(90-lang+tang);
draw origin--z1;
fill fullcircle scaled (2*wray) shifted z1;
+ currpic0 = currentpicture shifted -z0 rotated 180;
+ pair haxis, vaxis, pos;
+ numeric velh, velv, halfaccel, maxtime;
+ halfaccel = -1.866; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ maxtime = 20; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ haxis = dir(180+tang-lang);
+ vaxis = dir(270+tang-lang);
+ velh = tlen/maxtime;
+ velv = velh*sind(lang-tang)/cosd(lang-tang);
+ for i=1 upto maxtime:
+ pos := haxis*velh*i+vaxis*(velv+halfaccel*i)*i;
+ fill fullcircle scaled (2*sray) shifted (z0+pos);
+ endfor;
+ drawdblarrow z0--(z0+pos) withcolor white withpen outerpen;
+ drawdblarrow z0--(z0+pos) withcolor blue withpen basepen;
picture tmppicture;
tmppicture = currentpicture;
currentpicture := nullpicture;
draw t;
- fill p;
- draw tmppicture rotatedaround (z0,180+lang)
- shifted ((-0.5*(plen-pmal),sray)-z0);
+ draw p;
+ z999 = (-0.5*(plen-pmal),sray)-z0;
+ draw tmppicture rotatedaround (z0,180+lang) shifted (z999);
undraw origin--(-hlen,0) dashed mydash withpen outerpen;
draw origin--(-hlen,0) dashed mydash withpen basepen;
+ tmppicture := currentpicture;
+ currentpicture := nullpicture;
+ draw tmppicture rotated (-tang);
endfig;
+beginfig(0);
+ draw currpic0;
+ for i=0 step 90 until 270:
+ draw origin--(u*dir(i));
+ endfor;
+ label(btex Launch etex,(0,0.5sray));
+ label(btex \begin{tabular}{c} Position \\ of Ball \end{tabular} etex,
+ (0,-0.5sray));
+ basepen := pencircle scaled 0.35u;
+ outerpen := pencircle scaled 1.1u;
+ ahlength := 4mm;
+ drawdblarrow origin--(gmar+sray,0) withcolor white withpen outerpen;
+ drawdblarrow origin--(gmar+sray,0) withcolor blue withpen basepen;
+endfig;
+
+verbatimtex \end{document} etex
+
end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/bananadimmer.log b/Master/texmf-dist/doc/metapost/featpost/example/bananadimmer.log
deleted file mode 100644
index 5fe5102d83b..00000000000
--- a/Master/texmf-dist/doc/metapost/featpost/example/bananadimmer.log
+++ /dev/null
@@ -1,14 +0,0 @@
-This is MetaPost, version 1.504 (kpathsea version 6.0.0) 24 NOV 2011 13:14
-**bananadimmer.mp
-(mpost.mp (/usr/share/texmf-texlive/metapost/base/plain.mp
-Preloading the plain mem file, version 1.004)) (./bananadimmer.mp
-(/usr/share/texmf-texlive/metapost/featpost/featpost3Dplus2D.mp
-Preloading FeatPost macros, version 0.6.7)
->> banana
-! Isolated expression.
-<to be read again>
- (
-l.62 banana(
-
-? x
-
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/beautiful00.mp b/Master/texmf-dist/doc/metapost/featpost/example/beautiful00.mp
new file mode 100644
index 00000000000..d5204a4b5eb
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/beautiful00.mp
@@ -0,0 +1,40 @@
+% beautiful00.mp
+% L. Nobre G.
+% 2014
+
+prologues := 1;
+
+beginfig(1);
+ numeric u, firstep, cylray, plangle, i, a, as, speed, dist, accel, li, aux;
+ pair poi, tip, ref;
+ pen one;
+ accel = 0.27;
+ u = 1.2cm;
+ firstep = 6u;
+ cylray = 2u;
+ plangle = 12;
+ as = 5;
+ ahangle := 30;
+ ahlength := 0.035cylray;
+ one = pencircle scaled 0.015cylray;
+ drawoptions( withpen one );
+ li = 3;
+ aux = li*accel*firstep*(li+1);
+ fill (-cylray,0)--(aux,0)--(aux,-ahlength)--(-cylray,-ahlength)--cycle withcolor 0.5white;
+ for i=0 upto li:
+ speed := i*accel;
+ ref := (speed*firstep*i,0);
+ for a=as-90 step as until 270-as:
+ poi := ref+cylray*(dir(a)+up);
+ dist := abs( poi-ref );
+ tip := poi+speed*dist*dir(0.5*a-45);
+ drawarrow poi--tip;
+ endfor;
+ endfor;
+ picture tmpicture;
+ tmpicture = currentpicture;
+ currentpicture := nullpicture;
+ draw tmpicture rotated -plangle;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/cinemwork.mp b/Master/texmf-dist/doc/metapost/featpost/example/cinemwork.mp
index 37af4b547e2..7ff440223c3 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/cinemwork.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/cinemwork.mp
@@ -1,10 +1,8 @@
% cinemwork.mp
% L. Nobre G.
-% Feb2001
+% 2013
-verbatimtex \documentclass{article} \begin{document} etex
-
-%%input mp-tool;
+verbatimtex \documentclass{article}\begin{document} etex
def wmg = withcolor mygray enddef;
@@ -106,6 +104,19 @@ def picketfence =
endgroup
enddef;
+def woodblock =
+ begingroup
+ picture storepicture, returnpicture;
+ path borderbox;
+ storepicture := currentpicture;
+ currentpicture := nullpicture;
+ borderbox = origin--(136mm,0)--(136mm,45mm)--(0,45mm)--cycle;
+ fill borderbox wmg;
+ returnpicture := currentpicture;
+ currentpicture := storepicture;
+ ( returnpicture scaled (1/(136mm)) )
+ endgroup
+enddef;
beginfig(1);
numeric u, ma, mb, mc, md, me, mf, mg, mh, mi, mj, mk, ml, mq;
@@ -136,7 +147,11 @@ beginfig(1);
mr := (mf*md-me*mc)/(mf-me);
mygray := 0.8white;
magn := 2.5;
- linecap := butt;
+
+% draw picketfence scaled 0.8ml shifted (mn+0.1ml,mo+mk);
+ draw woodblock scaled 0.8ml shifted (mn+0.1ml,mo+mk);
+
+ linecap := butt;
pickup pencircle scaled ma;
draw (0,0)--(mb,0) wmg;
draw (0,0.5mg)--(mb,0.5mg);
@@ -160,21 +175,21 @@ beginfig(1);
pickup pencircle scaled 0.3ma;
draw lwheel cutafter carro cutbefore carro;
draw rwheel cutbefore carro cutafter carro;
- draw picketfence scaled 0.8ml shifted (mn+0.1ml,mo+mk);
- xzero := (0.8ml)*52.5/136+mn+(0.5ml);
+% xzero := (0.8ml)*52.5/136+mn+(0.5ml);
+ xzero := (1.0ml)*52.5/136+mn+(0.5ml);
ystart := 3.5*(mo+mk);
yzero := 1.05*(mo+mk)+(0.8ml)*45/136;
pickup pencircle scaled 0.3ma;
drawarrow (xzero,ystart)--(xzero,yzero);
label.top( btex $x_0$ etex scaled magn, (xzero,ystart) );
- zoom := fullcircle scaled (0.5ml) shifted (xzero,mo+mk+(0.8ml)*45/136);
- storepicture := currentpicture;
- clip currentpicture to zoom;
- draw zoom;
- resetpic;
- draw storepicture;
- draw tmpicture scaled 2 shifted (-5cm,5mm);
+ %zoom := fullcircle scaled (0.5ml) shifted (xzero,mo+mk+(0.8ml)*45/136);
+ %storepicture := currentpicture;
+ %clip currentpicture to zoom;
+ %draw zoom;
+ %resetpic;
+ %draw storepicture;
+ %draw tmpicture scaled 2 shifted (-5cm,5mm);
xthree := 0.5*(mb+mn+ml);
yend := 2mo;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/cylinderborders.mp b/Master/texmf-dist/doc/metapost/featpost/example/cylinderborders.mp
new file mode 100644
index 00000000000..bd4968d92f6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/cylinderborders.mp
@@ -0,0 +1,50 @@
+% cylinderborders.mp
+% L. Nobre G.
+% 2014
+
+prologues := 1;
+
+input featpost3Dplus2D;
+
+beginfig(1);
+ f := (3,5,2);
+ numeric margi, ray, dist, len, marj;
+ margi = 0.15;
+ marj = 0.37;
+ ray = 0.2;
+ dist = 0.6;
+ len = 0.25;
+ color pos, pa, pb, pc, pd, qa, qb, qc, qd, ra, P, Q;
+ pos = (marj,dist,0);
+ numeric pqwid, pqlen, theta;
+ pqwid = (dist ++ ray) + 2*margi;
+ pqlen = len + 4*margi;
+ theta = 2*angle(dist,ray);
+ pa = (2margi+marj,dist+margi,0);
+ pb = (2margi+marj,-margi,0);
+ pc = (-len-margi,-margi,0);
+ pd = (-len-margi,dist+margi,0);
+ qa = (margi+marj,dist+margi*cosd(theta),-margi*sind(theta));
+ qb = (margi+marj,dist-(dist+margi)*cosd(theta),(dist+margi)*sind(theta));
+ qc = (-len-2margi,dist-(dist+margi)*cosd(theta),(dist+margi)*sind(theta));
+ qd = (-len-2margi,dist+margi*cosd(theta),-margi*sind(theta));
+ ra = (margi+marj,dist,0);
+ path lowplan, higplan;
+ lowplan = rp(pa)--rp(pb)--rp(pc)--rp(pd)--cycle;
+ higplan = rp(qa)--rp(qb)--rp(qc)--rp(qd)--cycle;
+ unfill higplan;
+ draw higplan;
+ unfill lowplan;
+ draw lowplan;
+ draw rp(pos)--rp(-len*red);
+ rigorousdisc( 0, true, (0,0,ray), ray, -len*red );
+ draw rp(ra)--rp(qb);
+ draw rp(pos) withpen pencircle scaled 3pt;
+ P = (0,ray*sind(theta),ray*(1+cosd(theta)));
+ Q = P-len*red;
+ draw rp(black)--rp(pos)--rp(P)--rp(Q)--rp(pos);
+ draw rp(ra)--rp((-margi-len,dist,0)) dashed withdots withcolor 0.5white;
+ draw rp(P)--rp(Q) withcolor blue withpen pencircle scaled 2pt;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/dreamhouse.mp b/Master/texmf-dist/doc/metapost/featpost/example/dreamhouse.mp
new file mode 100644
index 00000000000..dba8b80a49d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/dreamhouse.mp
@@ -0,0 +1,212 @@
+% dreamhouse.mp
+% L. Nobre G.
+% 2011
+
+prologues := 2;
+
+beginfig(1);
+ numeric u;
+ u = 5mm; % deve corresponder a um metro
+ numeric theta, gamma;
+ theta = 8.7;
+ gamma = 25;
+ numeric lqua, lwca, lqub, lcor, lpor, lwcb, cqua, cqub, lwcc, cwcc, lesc;
+ lqua = 3.8u;
+ lwca = 1.5u;
+ lqub = 3.0u;
+ lcor = 1.2u;
+ lpor = 0.9u;
+ lwcb = 2.0u;
+ cqua = 4.0u;
+ cqub = 5.0u;
+ lwcc = 1.5u;
+ cwcc = 1.5u;
+ lesc = 3.0u;
+ numeric lcas, cdoj, cfaf, cfat, csal, cesc, cwca, dcor, ldoj, extr;
+ lcas = lqua+lwca+lqub;
+ cdoj = cqub+lcor+lwcb;
+ extr = cqua*sind(theta)/cosd(theta);
+ csal = lwca+lqua+extr;
+ ldoj = csal+lqub;
+ cesc = csal+lqub-2*lpor-lqub;
+ cwca = cqua-lcor;
+ dcor = lcor/cosd(gamma);
+ z1 = left*lpor;
+ z2 = z1+cesc*dir(-90-gamma);
+ z3 = z1+lesc*dir(180-gamma);
+ z4 = z2+lesc*dir(180-gamma);
+ z5 = z3+2*lpor*dir(90-gamma);
+ z6 = z5+lqub*dir(90-gamma);
+ z7 = z6+lwcb*dir(180-gamma);
+ z8 = z5+lwcb*dir(180-gamma);
+ z9 = z7+lcor*dir(180-gamma);
+ z10= z9+lqub*dir(-90-gamma);
+ z11= z9+cqub*dir(180-gamma)+extr*dir(-90-gamma);
+ z12=z11+(lqub-extr)*dir(-90-gamma);
+ z13=z12+cwca*dir(-gamma);
+ z14=z12+cqua*dir(-gamma);
+ z15=z12+lwca*dir(-90-gamma);
+ z16=z15+cwca*dir(-gamma);
+ z17=z11+(lcas-extr)*dir(-90-gamma);
+ z18=z14+csal*dir(-90-gamma);
+ z19=whatever[z17,z18];
+ x19= 0;
+ z20=z11+whatever*dir(theta-gamma);
+ x20= 0;
+ z21=whatever[z11,z6];
+ x21= 0;
+ z22=whatever[z4,z2];
+ x22= 0;
+ z23= right*lpor;
+ z24=z22+whatever*dir(gamma);
+ x24=x23;
+ z25=z23+dcor*down;
+ z26=z24+dcor*up;
+ z27=z26+lcor*right;
+ z28=z27+whatever*up;
+ z28=z25+whatever*right;
+ z33= (-x18,y18);
+ z30= (-x6,y6);
+ z29=z30+whatever*dir(gamma);
+ z29=z33+whatever*dir(90+gamma);
+ z31=z18+ldoj*dir(90-gamma);
+ z32= (-x4,y4);
+ z34= (-x3,y3);
+ z35=z24+whatever*dir(gamma);
+ z35=z27+whatever*down;
+ z36=z35+lwcc*dir(gamma);
+ z37=z36+cwcc*dir(90+gamma);
+ z38=z37+whatever*left;
+ z38=whatever[z28,z35];
+ draw origin--z1--z2;
+ draw z34--z23--z1--z3;
+ draw z4--z6;
+ draw z5--z8--z7;
+ draw z9--z10--z12;
+ draw z14--z18--z22--z33;
+ draw z13--z16--z15;
+ draw z18--z17--z11--z31--z21--z29--z33;
+ draw z30--z32;
+ draw z23--z24;
+ draw z25--z28--z35;
+ draw z36--z37--z38;
+ pen outpen;
+ outpen = pencircle scaled (0.2u);
+ draw z11--z17--z18--z22--z33--z29--z21--z31--cycle withpen outpen;
+endfig;
+
+beginfig(2);
+ numeric u;
+ u = 5mm; % deve corresponder a um metro
+ numeric theta, gamma;
+ theta = 8.7;
+ gamma = 25;
+ numeric lqua, lwca, lqub, lcor, lpor, lwcb, cqua, cqub, lwcc, cwcc, lesc;
+ numeric lcas, cdoj, cfaf, cfat, csal, cesc, cwca, dcor, ldoj, cwcb;
+ numeric cmed, lare, mroo;
+ lqua = 3.25u;
+ lcor = 1.2u;
+ lpor = 0.9u;
+ cqua = 4.5u;
+ lwcc = 2.0u;
+ cwcc = 1.5u;
+ lesc = 2.5u;
+ csal = 5.8u;
+ cwca = 2.0u;
+ lare = 2.0u;
+ mroo = 0.6u;
+ cdoj = 5.5u;
+ cwcb = 2*lcor;
+ cqub = cqua+cwca-lcor;
+ lwca = lqua-lcor;
+ lqub = lqua;
+ lwcb = lwca;
+ lcas = lqua+lqub;
+ ldoj = lcas;
+ cesc = lqua;
+ dcor = lcor/cosd(gamma);
+ cmed = csal+lwca+cqua;
+ z1 = left*lpor;
+ z2 = z1+cesc*dir(-90-gamma);
+ z3 = z34;
+ z4 = z32+ldoj*dir(90+gamma);
+ z5 = z1+2*lcor*dir(180-gamma);
+ z6 = z7+lqub*dir(-90-gamma);
+ z7 = z8+cwcb*dir(-gamma);
+ z8 =z11+cqub*dir(-gamma);
+ z9 = z8+lqub*dir(-90-gamma);
+ z10=z12+(cqua+lwca)*dir(-gamma);
+ z11=z12+lqub*dir(90-gamma);
+ z12= z1+cmed*dir(180-gamma);
+ z13=z10+lcor*dir(-90-gamma);
+ z14= z7+lwcb*dir(-90-gamma);
+ z15= z8+lwcb*dir(-90-gamma);
+ z16=z13+cwca*dir(180-gamma);
+ z17=z11+lcas*dir(-90-gamma);
+ z18=z13+lwca*dir(-90-gamma);
+ z19=z16+lwca*dir(-90-gamma);
+ z20= z22+up*lcor/cosd(gamma);
+ z21=whatever[z11,z7];
+ x21= 0;
+ z22=whatever[z18,z17];
+ x22= 0;
+ z23= right*lpor;
+ z24=z20+whatever*dir(-90-gamma);
+ z24=whatever[z2,z22];
+ z25=z23+cesc*dir(-90+gamma);
+ z26=z25+lcor*dir(90+gamma);
+ z27=z25+cwcc*dir(90+gamma);
+ z28=z27+lwcc*dir(gamma);
+ z29=z30+lqub*dir(-90+gamma);
+ z30= z4+lesc*dir(180+gamma);
+ z31=z25+lwcc*dir(gamma);
+ z32=z31+lare*dir(gamma);
+ z33=z32+cdoj*dir(gamma);
+ z34=z32+cesc*dir(90+gamma);
+ z35=z33+ldoj*dir(90+gamma);
+ z36=z35+sqrt(2)*mroo*dir(45+gamma);
+ z37=z36+whatever*dir(180+gamma-theta);
+ x37= 0;
+ z38=z11+sqrt(2)*mroo*dir(135-gamma);
+ z39=z38+(lcas+2*mroo)*dir(-90-gamma);
+ z40=z41+whatever*dir(180+gamma+theta);
+ x40= 0;
+ z41=z36+(ldoj+2*mroo)*dir(-90+gamma);
+ z42=z30+lcor*dir(-90+gamma);
+ draw z32--z34--z23--z1;
+ draw z5--z6--z7;
+ draw z14--z15;
+ draw z8--z9;
+ draw z27--z28--z31;
+ draw z18--z10--z12;
+ draw z13--z16--z19;
+ draw z1--z2;
+ draw z3--z4;
+ draw z23--z25;
+ draw z26--z20--z24;
+ draw z29--z42;
+ pen outpen;
+ outpen = pencircle scaled (0.2u);
+ draw z11--z17--z22--z33--z35--z21--cycle withpen outpen;
+ draw z36--z37--z38--z39--z40--z41--cycle withpen outpen withcolor 0.5white;
+ drawoptions( withcolor 0.75white);
+% dotlabels.bot(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
+% dotlabels.bot(21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40);
+% dotlabels.bot(41,42);
+ numeric aux;
+ aux = abs(z35-z21)+abs(z33-z22)+abs(z21-z11)+abs(z22-z17);
+ show aux*lqua/(u**2);
+ label("QUA",(z12+z10+z17+z18)/4);
+ label("QUB",(z11+z12+z8+z9)/4);
+ label("WCA",(z19+z18+z16+z13)/4);
+ label("WCB",(z14+z15+z8+z7)/4);
+ label("SAL",(z2+z1+z10+z18)/4);
+ label("COZ",(z21+z5+z29)/3);
+ label("HAL",(z1+z2+z23+z25)/4);
+ label("ESC",(z30+z29+z4+z3)/4);
+ label("ARE",(z23+z34+z32)/3);
+ label("DOJ",(z4+z32+z33+z35)/4);
+ label("WCC",(z25+z27+z28+z31)/4);
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/fallinthewind.mp b/Master/texmf-dist/doc/metapost/featpost/example/fallinthewind.mp
index 4e54429b3ed..f4984971b67 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/fallinthewind.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/fallinthewind.mp
@@ -1,22 +1,22 @@
% fallinthewind.mp
% L. Nobre G.
-% 2007
+% 2014
input featpost3Dplus2D;
-Spread := 40;
-%f := 0.5[0.3*(15,10,5),0.3*(1.5,1,15)];
-f := 1.5*(2.5,1.7,1.5);
-viewcentr := (0,0,0.96);
-%show f;
-
prologues := 1;
+Spread := 9;
+f := 4.5*(2.5,-1.3,1.7);
+viewcentr := (0,0,2);
+background := 0.9white;
+
color referencewind;
-numeric dragcoeff, horangle, quadcoef;
+numeric dragcoef, dragcoeg, horangle, quadcoef;
horangle = 90;
referencewind = red*cosd( horangle ) + green*sind( horangle );
-dragcoef = 0.045;
+dragcoef = 0.065;
+dragcoeg = 0.009;
quadcoef = 0.99;
def vecfunc( expr posit, veloc )=
@@ -25,47 +25,51 @@ def vecfunc( expr posit, veloc )=
color wind, field, blow;
numeric heig, wint;
heig = Z( posit );
- wind = referencewind*quadcoef*(( heig+0.0001 )**2);
+ wind = referencewind*quadcoef*sqrt( heig+0.05 );
wind := wind-veloc;
wint = conorm( wind );
blow = N( wind );
- field = dragcoef*blow*wint-blue;
+ field = (dragcoef+dragcoeg*wint)*wind-blue;
( field )
endgroup
enddef;
beginfig(1);
- numeric i, numa, sa, ea, diffstep, ray;
+ numeric i, j, k, numa, sa, ea, diffstep, ray;
color stp, svl, arrbe, arren;
- path oneline;
+ path oneline[];
pen grossa, fina;
- arrbe = (0,-5,1);
- arren = (0,-3,1);
- TDAtiplen := 0.5;
- TDAhalftipbase := 0.2;
- TDAhalfthick := 0.1;
- grossa = pencircle scaled 3pt;
- fina = pencircle scaled 2pt;
- diffstep = 0.03;
- ray = 2.2;
-% numa = 0.02;
-% sa = 106.4;
-% ea = 106.6;
- numa = 2;
- sa = 80.5;
- ea = 130.5;
- setthestage( 20, 10 );
+ arrbe = (0,-8,5);
+ arren = (0,-5.5,5);
+ setthestage( 18, 20 );
+ TDAtiplen := 0.75;
+ TDAhalftipbase := 0.3;
+ TDAhalfthick := 0.15;
+ grossa = pencircle scaled 1.8pt;
+ fina = pencircle scaled 1.2pt;
+ diffstep = 0.015;
+ ray = 3.95;
+ numa = 3.45;
+ sa = 38;
+ ea = 142;
+ j = 0;
for i=sa step numa until ea:
+ j := j+1;
stp := black;
svl := ray*(green*cosd(i)+blue*sind(i));
- oneline := dragtrajectorypath( stp, svl, diffstep, vecfunc );
- draw oneline;
-% draw oneline withpen fina withcolor background;
+ oneline[j] := dragtrajectorypath( stp, svl, diffstep, vecfunc );
+ draw oneline[j] withpen grossa withcolor white;
+ endfor;
+ for k=1 upto j:
+ draw oneline[k] withpen fina withcolor red;
endfor;
tdarrow( arrbe, arren );
+ draw rp(black)--rp((0,0,4.5)) dashed withdots withpen fina withcolor blue;
produce_vga_border;
endfig;
+end.
+
ray := 3.25;
numeric min, rst;
min = 0.5;
@@ -98,5 +102,5 @@ for i=min step rst until ray:
endfor;
message " ";
-end.
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/geometricaverage.mp b/Master/texmf-dist/doc/metapost/featpost/example/geometricaverage.mp
index 88bd19d0d1f..655d83dc9a5 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/geometricaverage.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/geometricaverage.mp
@@ -1,6 +1,6 @@
% geometricaverage.mp
% L. Nobre G.
-% 2006
+% 2014
input featpost3Dplus2D;
@@ -50,6 +50,9 @@ beginfig(1);
z10 = (lba/lca)[z2,z6];
draw z1--z10;
labels.top(1,2,3,4,5,6,7,8,9,10);
+
+ z11 = vp( vf-vd );
+ drawarrow z9--z11;
endfig;
verbatimtex \end{document} etex
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/hexagonalgrid.mp b/Master/texmf-dist/doc/metapost/featpost/example/hexagonalgrid.mp
new file mode 100644
index 00000000000..5a4b0b04dca
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/hexagonalgrid.mp
@@ -0,0 +1,132 @@
+% hexagonalgrid.mp
+% L. Nobre G.
+% 2014
+
+verbatimtex \documentclass{article}\begin{document} etex
+
+prologues := 3;
+
+input graph;
+
+beginfig(1);
+ numeric u, vertlim, horilim, dotsiz, inistep, mininistep, maxinistep;
+ numeric securitymargin;
+ u = 1.01cm;
+ vertlim = 30u;
+ horilim = vertlim/sqrt(2);
+ dotsiz = 0.3u;
+ mininistep = 4.867u;
+ maxinistep = 4.868u;
+ inistep = 0.5*(mininistep+maxinistep);
+ securitymargin = 4u;
+ pair upperleft, horizrigh;
+ upperleft = (-15u,45u)+45u*dir(135);
+ horizrigh = (35u,vertlim);
+ pen defpen;
+ defpen = pencircle scaled dotsiz;
+ numeric i, j, Num;
+ Num = 150;
+ j = 0;
+ for i=mininistep step (maxinistep-mininistep)/Num until maxinistep:
+ pair Dh[]v[];
+ Dh0v0 = (0,vertlim);
+ Dh0v1 = (0,vertlim-i);
+ numeric indh;
+ indh = 0;
+ forever:
+ Dh[indh+1]v1 = whatever[upperleft,Dh[indh]v0];
+ Dh[indh+1]v1 = whatever[horizrigh,Dh[indh]v1];
+ xpart Dh[indh+1]v0 = xpart Dh[indh+1]v1;
+ Dh[indh+1]v0 = whatever[horizrigh,Dh[indh]v0];
+ exitif xpart Dh[indh+1]v0 > horilim;
+ indh := indh + 1;
+ endfor;
+ z[j] = (i,xpart Dh[indh+1]v0 - horilim)/u;
+ j := j + 1;
+ endfor;
+ path thecurve;
+ picture theplus;
+ theplus = btex $+$ etex;
+ theplus := theplus shifted -(center theplus);
+ thecurve = z0 for i=1 upto j-1: --z[i] endfor;
+ picture thegraph;
+ thegraph = begingraph(9u,6u);
+ glabel.bot( btex inistep/u etex, OUT );
+ glabel.lft( btex deviation/u etex, OUT );
+ gdraw thecurve withpen defpen withcolor blue;
+ gdraw thecurve plot theplus;
+ autogrid(grid.bot,grid.lft) withcolor red dashed evenly;
+ endgraph;
+ draw thegraph;
+endfig;
+
+beginfig(2);
+ pair Dh[]v[];
+ Dh0v0 = (0,vertlim);
+ Dh0v1 = (0,vertlim-inistep);
+ drawoptions( withpen defpen );
+ draw Dh0v0;
+ draw Dh0v1;
+ numeric indh, indv, maxindv[];
+ indh = 0;
+ indv = 2;
+ forever:
+ Dh[indh+1]v[indv-1] = whatever[upperleft,Dh[indh]v[indv-2]];
+ Dh[indh+1]v[indv-1] = whatever[horizrigh,Dh[indh]v[indv-1]];
+ draw Dh[indh+1]v[indv-1];
+ forever:
+ xpart Dh[indh+1]v[indv-1] = xpart Dh[indh+1]v[indv];
+ Dh[indh+1]v[indv] = whatever[upperleft,Dh[indh]v[indv-1]];
+ draw Dh[indh+1]v[indv];
+ xpart Dh[indh]v[indv] = xpart Dh[indh]v[indv-1];
+ Dh[indh]v[indv] = whatever[horizrigh,Dh[indh+1]v[indv]];
+ draw Dh[indh]v[indv];
+ exitif ypart Dh[indh]v[indv] < -securitymargin;
+ indv := indv + 1;
+ endfor;
+ maxindv[indh] = indv;
+ xpart Dh[indh+1]v0 = xpart Dh[indh+1]v1;
+ Dh[indh+1]v0 = whatever[horizrigh,Dh[indh]v0];
+ draw Dh[indh+1]v0;
+ show xpart Dh[indh+1]v0 - xpart Dh[indh]v0;
+ exitif xpart Dh[indh+1]v0 > horilim+securitymargin;
+ indh := indh + 1;
+ indv := 2;
+ Dh[indh+1]v[indv-1] = whatever[upperleft,Dh[indh]v[indv-2]];
+ Dh[indh+1]v[indv-1] = whatever[horizrigh,Dh[indh]v[indv-1]];
+ draw Dh[indh+1]v[indv-1];
+ xpart Dh[indh+1]v0 = xpart Dh[indh+1]v1;
+ show xpart Dh[indh+1]v0 - xpart Dh[indh]v0;
+ Dh[indh+1]v0 = whatever[horizrigh,Dh[indh]v0];
+ draw Dh[indh+1]v0;
+ indh := indh + 1;
+ endfor;
+ drawoptions();
+ for i=2 step 2 until indh+1:
+ for j=0 upto maxindv[i-2]-1:
+ draw Dh[i]v[j+1]--Dh[i-1]v[j]--Dh[i]v[j]--cycle;
+ draw Dh[i-1]v[j+1]--Dh[i-2]v[j]--Dh[i-1]v[j]--cycle;
+ endfor;
+ endfor;
+ path borde, bordf;
+ borde = (-dotsiz,-dotsiz)
+ --(-dotsiz,vertlim+dotsiz)
+ --(horilim+dotsiz,vertlim+dotsiz)
+ --(horilim+dotsiz,-dotsiz)--cycle;
+ bordf = origin--(0,vertlim)--(horilim,vertlim)--(horilim,0)--cycle;
+ clip currentpicture to bordf;
+ draw bordf;
+ picture lasercutprofile;
+ lasercutprofile = currentpicture;
+ draw borde;
+ %draw upperleft withpen defpen;
+ %draw horizrigh withpen defpen;
+endfig;
+
+beginfig(3);
+ draw lasercutprofile withpen pencircle scaled 0 withcolor red;
+endfig;
+
+verbatimtex \end{document} etex
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/intersectorus.mp b/Master/texmf-dist/doc/metapost/featpost/example/intersectorus.mp
new file mode 100644
index 00000000000..04e9ff2fd71
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/intersectorus.mp
@@ -0,0 +1,30 @@
+% intersectorus.mp
+% L. Nobre G.
+% 2014
+
+input featpost3Dplus2D;
+
+f := (1,-5,2);
+
+beginfig(1);
+ numeric ray, i, Num, zcoord;
+ color startpoi, lindir, outpoi, auxpoi;
+ ray = 0.4;
+ zcoord = 0.5*ray;
+ startpoi = (-1-0.5*ray,-1,zcoord);
+ lindir = (0,3,-2.5);
+ Num = 50;
+ smoothtorus( black, blue, 1, ray );
+ for i=0 upto Num:
+ auxpoi := startpoi+2*(1+0.5*ray)*red*i/Num;
+ outpoi := intersectorus( black, blue, 1, ray, auxpoi, lindir );
+ if pointinsidetorus( auxpoi, black, blue, 1, ray ):
+ draw rp(auxpoi)--rp(outpoi) withpen pencircle scaled 2pt withcolor red;
+ else:
+ draw rp(auxpoi)--rp(outpoi) withpen pencircle scaled 2pt;
+ fi;
+ endfor;
+ draw rp(startpoi)--rp(auxpoi);
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/keplernewtonfeynman.mp b/Master/texmf-dist/doc/metapost/featpost/example/keplernewtonfeynman.mp
index e2cf2281f2d..b30e6b04377 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/keplernewtonfeynman.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/keplernewtonfeynman.mp
@@ -1,6 +1,6 @@
% keplernewtonfeynman.mp
% L. Nobre G.
-% 2013
+% 2014
%input featpost3Dplus2D;
@@ -8,27 +8,31 @@ prologues := 0;
%verbatimtex \documentclass{article}\usepackage{mathpazo}\begin{document} etex
+ahangle := 30;
+
beginfig(1);
- numeric u, abratio, foc, pang, auxang, refdist, stepang, factor;
+ numeric u, abratio, foc, pang, auxang, refdist, stepang, factor, thang;
pair secofod, ocirpoi, midpoi, tpoi, dirplu, dirmin;
pen poipen;
color mygrey;
path thecircle;
- stepang = 4.3;
+ thang = -45;
+ stepang = 4;
poipen = pencircle scaled 1mm;
mygrey = 0.5*(red+green);
u = 1cm;
- abratio = 0.5*(1+sqrt(5));
+ %abratio = 0.5*(1+sqrt(5));
+ abratio = 1.2;
foc = u*(abratio +-+ 1);
refdist = 2*u*abratio;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- factor = 1.5;
- secofod = (refdist,0)*factor;
- secofod := (2foc,0);
+ factor = 1.02;
+ secofod := 2*foc*dir(thang);
thecircle = fullcircle scaled 2refdist;
+ pickup pencircle scaled 0;
%draw fullcircle scaled 2u xscaled abratio shifted (foc,0);
- draw thecircle;
- draw secofod withpen poipen;
+ %draw thecircle;
+ draw secofod withpen poipen withcolor blue;
for pang = stepang step stepang until 360:
ocirpoi := refdist*dir(pang);
midpoi := 0.5[secofod,ocirpoi];
@@ -39,11 +43,11 @@ beginfig(1);
tpoi = whatever*dir(pang);
tpoi = whatever[midpoi,midpoi+dirplu];
%draw ocirpoi--secofod withcolor mygrey;
- draw tpoi withpen poipen withcolor red;
+ %draw tpoi withpen poipen withcolor red;
drawarrow tpoi--(tpoi+abs(midpoi-secofod)*dirplu/factor);
endfor;
clip currentpicture to (thecircle scaled (factor**2));
- draw origin withpen poipen;
+ draw origin withpen poipen withcolor green;
endfig;
verbatimtex \end{document} etex
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp b/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
index 4cb3f4f6bfd..b62491b74a6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
@@ -1,9 +1,34 @@
% lgc2refractionEdited.mp
% lgc means LaTeX Graphics Companion
-% 2013
+% 2014
prologues := 1;
+vardef refractray(expr s,a,p,rir)=
+ save tI,tn,ia,ib,I,J,sib;
+ pair I,J;
+ tI = xpart(p intersectiontimes (s--(s+30cm*dir(a))));
+ if tI>=0:
+ I=point tI of p;
+ draw s--I;
+ tn=angle(direction tI of p)+90;
+ ia=tn-angle(s-I);
+ sib=sind(ia)/rir;
+ ib=-angle(1+-+sib,sib);
+ J=I+dir(tn+180+ib)*2cm;
+ draw I--J withcolor blue;
+ fi;
+enddef;
+
+beginfig(1);
+ numeric u;
+ u=3mm;
+ path p;
+ p=((5u,-6u)..(4u,-2u)..(4.5u,0)..(5u,5u)) rotated 90;
+ for a=40 step 5 until 140: refractray(origin,a,p,1.5); endfor;
+ draw p withcolor red;
+endfig;
+
vardef lensrefractray(expr s,a,p,q,rir)=
save tI,tn,ia,ib,I,J,K,sib;
pair I,J,K;
@@ -30,57 +55,72 @@ vardef lensrefractray(expr s,a,p,q,rir)=
fi;
enddef;
-vardef refractray(expr s,a,p,rir)=
- save tI,tn,ia,ib,I,J,sib;
+beginfig(2);
+ path q;
+ q = reverse (p yscaled (-1)) shifted (up*10.5u);
+ fill (p--q--cycle) withcolor red;
+ for a=46 step 3 until 120:
+ lensrefractray(origin,a,p,q,1.4);
+ endfor;
+endfig;
+
+vardef reflectray(expr s,a,p,l)=
+ save tI,tn,ia,I,J;
pair I,J;
- tI = xpart(p intersectiontimes (s--(s+30cm*dir(a))));
+ tI=xpart(p intersectiontimes (s--(s+30cm*dir(a))));
if tI>=0:
I=point tI of p;
draw s--I;
tn=angle(direction tI of p)+90;
ia=tn-angle(s-I);
- sib=sind(ia)/rir;
- ib=-angle(1+-+sib,sib);
- J=I+dir(tn+180+ib)*2cm;
+ J=I+dir(tn+ia)*l;
draw I--J withcolor blue;
fi;
enddef;
-vardef reflectray(expr s,a,p)=
- save tI,tn,ia,I,J;
- pair I,J;
+beginfig(3);
+ for a=40 step 5 until 140: reflectray(origin,a,p,2cm); endfor;
+ draw p withcolor red;
+endfig;
+
+vardef doublereflection(expr s,a,p,q,l,m)=
+ save tI,tn,ia,I,J,K;
+ pair I,J,K;
tI=xpart(p intersectiontimes (s--(s+30cm*dir(a))));
if tI>=0:
I=point tI of p;
draw s--I;
tn=angle(direction tI of p)+90;
ia=tn-angle(s-I);
- J=I+dir(tn+ia)*2cm;
- draw I--J withcolor blue;
+ J=I+dir(tn+ia)*l;
+ tI := xpart(q intersectiontimes (I--J));
+ if tI>=0:
+ K:=point tI of q;
+ draw I--K withcolor blue;
+ tn:=angle(direction tI of q)+90;
+ ia:=tn-angle(I-K);
+ J:=K+dir(tn+ia)*m;
+ draw K--J;
+ fi;
fi;
enddef;
-beginfig(2);
- numeric u;
+beginfig(4);
+ numeric u, ad, len;
u=3mm;
- path p;
- p=((5u,-6u)..(4u,-2u)..(4.5u,0)..(5u,5u)) rotated 90;
- for a=40 step 5 until 140: reflectray(origin,a,p); endfor;
- draw p withcolor red;
-endfig;
-
-beginfig(1);
- for a=40 step 5 until 140: refractray(origin,a,p,1.5); endfor;
- draw p withcolor red;
-endfig;
-
-beginfig(3);
- path q;
- q = reverse (p yscaled (-1)) shifted (up*10.5u);
- fill (p--q--cycle) withcolor red;
- for a=46 step 3 until 120:
- lensrefractray(origin,a,p,q,1.4);
+ ad=83;
+ len = 5cm;
+ path p,q;
+ pair sourc;
+ sourc = (-2u,0);
+ p=(-5u,0){up}..{right}(3u,9u);
+ q=(6u,0)..{dir(ad)}(10u,11u);
+ for a=60 step 3 until 120:
+ %reflectray(sourc,a,p,len);
+ doublereflection(sourc,a,p,q,len,0.3*len);
endfor;
+ draw p withcolor red;
+ draw q withcolor red;
endfig;
end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/lowcostgreenhouse.mp b/Master/texmf-dist/doc/metapost/featpost/example/lowcostgreenhouse.mp
new file mode 100644
index 00000000000..92c09ff7d3d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/lowcostgreenhouse.mp
@@ -0,0 +1,71 @@
+% lowcostgreenhouse.mp
+% L. Nobre G.
+% 2014
+
+prologues := 3;
+
+verbatimtex \documentclass{article}\begin{document} etex;
+
+beginfig(1);
+ numeric u;
+ u = 7mm;
+ numeric numcenhexagons, marg;
+ numcenhexagons = 2;
+ marg = 0.2u;
+ numeric wid, len, ray, basewid;
+ basewid = 11*sqrt(3)/3;
+ wid = basewid*u;
+ len = 2*u*(3*numcenhexagons+basewid);
+ draw (-marg,-marg)--(marg+wid,-marg)--
+ (marg+wid,marg+len)--(-marg,marg+len)--cycle;
+ path botcircle, topcircle;
+ z1 = (wid/2,0);
+ botcircle = halfcircle scaled wid shifted z1;
+ z2 = (0,len);
+ topcircle = botcircle yscaled -1 shifted z2;
+ draw botcircle;
+ draw topcircle;
+ z3 = (0,len-wid/2);
+ z4 = (wid,len-wid/2);
+ draw z3--z4 withcolor red;
+ z5 = (0,wid/2);
+ z6 = (wid,wid/2);
+ draw z5--z6 withcolor red;
+ z7 = (0,-2marg);
+ z8 = (wid,-2marg);
+ drawdblarrow z7--z8;
+ label.bot(btex $w$ etex, 0.5[z7,z8]);
+ z9 = (-2marg, wid);
+ z10 = (-2marg, 0);
+ drawdblarrow z9--z10;
+ label.lft(btex $w=\frac{11}{3}\sqrt{3}$ etex, 0.5[z9,z10]);
+ numeric j, k;
+ k = 11;
+ for j=wid*(1-0.5*sqrt(3)) step 6u until len-sqrt(3)*wid:
+ z[k] = (0,j);
+ z[k+1] = (wid,j+sqrt(3)*wid);
+ draw z[k]--z[k+1];
+ z[k+2] = (wid,j);
+ z[k+3] = (0,j+sqrt(3)*wid);
+ draw z[k+2]--z[k+3];
+ z[k+4] = (0,j+0.5*sqrt(3)*wid-1.5u);
+ z[k+5] = (wid,j+0.5*sqrt(3)*wid-1.5u);
+ draw z[k+4]--z[k+5] withcolor (red+blue);
+ z[k+6] = (0,j+0.5*sqrt(3)*wid+1.5u);
+ z[k+7] = (wid,j+0.5*sqrt(3)*wid+1.5u);
+ draw z[k+6]--z[k+7] withcolor (red+blue);
+ k := k+8;
+ endfor;
+ z100 = z16+2*marg*right;
+ z101 = z18+2*marg*right;
+ drawdblarrow z101--z100;
+ label.rt(btex $3$ etex, 0.5[z100,z101]);
+ z200 = z19-2*marg*right;
+ z201 = z17-2*marg*right;
+ drawdblarrow z201--z200;
+ label.lft(btex $1$ etex, 0.5[z200,z201]);
+endfig;
+
+verbatimtex \end{document} etex
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/milimetricpaper.mp b/Master/texmf-dist/doc/metapost/featpost/example/milimetricpaper.mp
index 81b2904b223..da101392427 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/milimetricpaper.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/milimetricpaper.mp
@@ -1,28 +1,27 @@
% milimetricpaper.mp
% L. Nobre G.
-% 2005
-
-%%input mp-tool;
+% 2014
prologues := 1;
beginfig(1);
- numeric u, xsize, ysize, i;
+ numeric u, xsize, ysize, i, ticsize;
numeric minstep, majstep, bigstep;
pen minpen, majpen, bigpen;
color mincolor, majcolor, bigcolor;
u = 1mm;
- xsize = 16cm;
- ysize = 16cm;
+ xsize = 15cm;
+ ysize = 11cm;
+ ticsize = 3u;
minstep = 2u;
majstep = 10u;
- bigstep = 50u;
+ bigstep = 20u;
minpen = pencircle scaled 0pt;
- majpen = pencircle scaled 0.3pt;
- bigpen = pencircle scaled 0.8pt;
- mincolor = 0.5white;
- majcolor = 0.2white;
- bigcolor = 0.5white;
+ majpen = pencircle scaled 0.4pt;
+ bigpen = pencircle scaled 0.99pt;
+ mincolor = 0.65white;
+ majcolor = 0.35white;
+ bigcolor = 0.15white;
for i=0 step minstep until xsize:
draw (i,0)--(i,ysize) withpen minpen withcolor mincolor;
endfor;
@@ -30,10 +29,10 @@ beginfig(1);
draw (0,i)--(xsize,i) withpen minpen withcolor mincolor;
endfor;
for i=0 step bigstep until xsize:
- draw (i,0)--(i,ysize) withpen bigpen withcolor bigcolor;
+ draw (i,-ticsize)--(i,ysize) withpen bigpen withcolor bigcolor;
endfor;
for i=0 step bigstep until ysize:
- draw (0,i)--(xsize,i) withpen bigpen withcolor bigcolor;
+ draw (-ticsize,i)--(xsize,i) withpen bigpen withcolor bigcolor;
endfor;
for i=0 step majstep until xsize:
draw (i,0)--(i,ysize) withpen majpen withcolor majcolor;
@@ -42,4 +41,12 @@ beginfig(1);
draw (0,i)--(xsize,i) withpen majpen withcolor majcolor;
endfor;
endfig;
-end. \ No newline at end of file
+
+beginfig(2);
+ drawarrow origin--(xsize,0) withpen bigpen;
+ for i=majstep step majstep until xsize-2majstep:
+ draw (i,-minstep)--(i,minstep) withpen majpen;
+ endfor;
+endfig;
+
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/parabolaonthestage.mp b/Master/texmf-dist/doc/metapost/featpost/example/parabolaonthestage.mp
new file mode 100644
index 00000000000..3b81e587775
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/parabolaonthestage.mp
@@ -0,0 +1,17 @@
+% parabolaonthestage.mp
+% L. Nobre G.
+% 2014
+
+input featpost3Dplus2D;
+Spread := 30;
+f := (5,3,2);
+beginfig(1);
+ numeric i, li;
+ li = 50;
+ setthestage( 18, 10 );
+ draw for i=-li step 0.25 until li-0.25:
+ rp((5-(i**2),i,0))...
+ endfor rp((5-(li**2),li,0)) withcolor blue withpen pencircle scaled 3pt;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/project.mp b/Master/texmf-dist/doc/metapost/featpost/example/project.mp
index 348a39321dd..34d4e7e4b13 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/project.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/project.mp
@@ -1,26 +1,27 @@
+% project.mp
+% L. Nobre G.
+% 2013
-verbatimtex
-\documentclass{article}
-\begin{document}
-etex
+verbatimtex \documentclass{article}\begin{document} etex
beginfig(1);
ahangle := 30;
numeric angthe, angalf, angpsi, xtopo, ytopo, xpoin;
- numeric radthe, radalf, radpsi;
+ numeric radthe, radalf, radpsi, extenfac;
numeric ysize, xsize, margs, units, parac, i, dim;
pair vzer, incl, hori, topo;
path parab, plani, veloc, xaxis, yaxis, auxil;
pen thick, usual, vthin;
- angpsi = 20;
+angpsi = -13;
+extenfac = 1.2;
dim = 50;
units = 1mm;
margs = 8units;
xsize = 70units;
ysize = 40units;
- radthe = 22units;
- radalf = 34units;
- radpsi = 46units;
+ radthe = 34units;
+ radalf = 46units;
+ radpsi = 22units;
thick = pencircle scaled 0.5units;
usual = pencircle scaled 0.2units;
vthin = pencircle scaled 0.1units;
@@ -29,11 +30,11 @@ beginfig(1);
parac = ytopo/(xtopo*xtopo);
yaxis = ( 0, -margs/2 )--( 0, ysize-margs );
xaxis = ( -margs, 0 )--( xsize-margs, 0 );
- plani = ( -margs*cosd( angpsi ), -margs*sind( angpsi ) )
- --( 2*xtopo, 2*xtopo*sind( angpsi )/cosd( angpsi ) );
+ plani = (margs*( -cosd( angpsi ), -sind( angpsi ) ) )
+ --(extenfac*( 2*xtopo, 2*xtopo*sind( angpsi )/cosd( angpsi ) ) );
topo = ( xtopo, ytopo );
parab = origin;
- for i = 1 upto dim:
+ for i = 1 upto extenfac*dim:
xpoin := 2*i*xtopo/dim;
parab := parab..(xpoin,ytopo-parac*(xpoin-xtopo)*(xpoin-xtopo));
endfor;
@@ -51,25 +52,23 @@ beginfig(1);
drawarrow yaxis;
draw plani;
draw parab cutbefore reverse plani dashed evenly;
- draw auxil dashed evenly;
+% draw auxil dashed evenly;
pickup vthin;
draw fullcircle scaled radthe cutafter veloc;
- draw fullcircle scaled radalf cutafter auxil;
+% draw fullcircle scaled radalf cutafter auxil;
draw fullcircle scaled radpsi cutafter plani;
dotlabel.urt( btex $H$ etex, hori );
- dotlabel.top( btex $I$ etex, incl );
- dotlabel.top( btex $T$ etex, topo );
+ dotlabel.urt( btex $I$ etex, incl );
+% dotlabel.top( btex $T$ etex, topo );
label.bot( btex $x$ etex, point 1 of xaxis );
label.lft( btex $y$ etex, point 1 of yaxis );
label.lft( btex $\vec{v}_0$ etex, vzer );
label.urt( btex $\Theta$ etex, ( radthe/2, 0 ) );
- label.urt( btex $\alpha$ etex, ( radalf/2, 0 ) );
+% label.urt( btex $\alpha$ etex, ( radalf/2, 0 ) );
label.urt( btex $\Psi$ etex, ( radpsi/2, 0 ) );
endfig;
-verbatimtex
-\end{document}
-etex
+verbatimtex \end{document} etex
end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/raiodoscirculos.mp b/Master/texmf-dist/doc/metapost/featpost/example/raiodoscirculos.mp
index c618e659ba8..27974ecb0e8 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/raiodoscirculos.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/raiodoscirculos.mp
@@ -1,6 +1,6 @@
% raiodoscirculos.mp
% L. Nobre G.
-% 2013
+% 2014
beginfig(1);
numeric u, r, p;
@@ -51,20 +51,47 @@ endfig;
beginfig(5);
drawoptions( withpen mypen );
draw mysquare scaled u;
- r := 1/(1+sqrt(2));
- halcir := halfcircle scaled 2r shifted (r*right);
- draw halcir scaled u;
- secondhalfcircle := halfcircle scaled 2r rotated 90 shifted (1,1-r);
- draw secondhalfcircle scaled u;
+ r := sqrt(2)-1;
+ draw quarcirc scaled 2 shifted (right+up) scaled u;
+ draw quarcirc rotated 180 scaled (2r*u);
endfig;
beginfig(6);
drawoptions( withpen mypen );
draw mysquare scaled u;
r := 1/4;
- halcir := halfcircle scaled 0.5 shifted (right/4);
+ halcir := halfcircle scaled 0.5 shifted (r*right);
draw halcir scaled u;
draw quarcirc scaled 2 shifted (right+up) scaled u;
endfig;
+beginfig(7);
+ drawoptions( withpen mypen );
+ path thisquare;
+ thisquare = mysquare scaled u;
+ draw thisquare;
+ r := (sqrt(7)-1)/3;
+ halcir := (halfcircle scaled 2r shifted (r*right)) cutbefore mysquare;
+ draw halcir scaled u;
+ draw quarcirc scaled 2r shifted (right+up) scaled u;
+endfig;
+
+beginfig(8);
+ drawoptions( withpen mypen );
+ draw mysquare scaled u;
+ r := 1/(1+sqrt(2));
+ draw quarcirc rotated 180 scaled (2r*u);
+ draw fullcircle scaled 2r shifted ((1-r)*(right+up)) scaled u;
+endfig;
+
+beginfig(9);
+ drawoptions( withpen mypen );
+ draw mysquare scaled u;
+ r := 1/(1+sqrt(2));
+ halcir := halfcircle scaled 2r shifted (r*right);
+ draw halcir scaled u;
+ secondhalfcircle := halfcircle scaled 2r rotated 90 shifted (1,1-r);
+ draw secondhalfcircle scaled u;
+endfig;
+
end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/revolutionparaboloid.mp b/Master/texmf-dist/doc/metapost/featpost/example/revolutionparaboloid.mp
new file mode 100644
index 00000000000..a0a29ac22e9
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/revolutionparaboloid.mp
@@ -0,0 +1,167 @@
+% revolutionparaboloid.mp
+% L. Nobre G.
+% 2014
+
+%outputformat := "png";
+%outputformatoptions := "format=rgb antialias=best";
+%hppp := 0.5;
+%vppp := 0.5;
+
+input featpost3Dplus2D;
+
+%prologues := 1;
+
+f := 0.7*(3,3,-5);
+
+beginfig(1);
+ numeric u, r;
+ color b, t;
+ u = 2mm;
+ b = (-1.0,0.0,0.0);
+ t = (-0.4,0.3,0.9);
+ r = 0.6;
+ drawoptions(withpen pencircle scaled u);
+ revolparab( b, t, r );
+endfig;
+
+def parab( expr xis ) = (0.25*(xis**2)) enddef;
+def oloid( expr xis ) = (1-(xis/2)**2) enddef;
+def deriv( expr xis ) = (0.5*xis) enddef;
+
+beginfig(2);
+ pair pzero, pone;
+ pzero = (-0.5,-5.5);
+ numeric u, delta, n, ste, minx, maxx, itex, tanx, marg, slope, sa, aux;
+ n = 50;
+ marg = 1;
+ u = 5mm;
+ delta = sqrt((xpart pzero)**2-4*(ypart pzero));
+ minx = (xpart pzero)-delta-marg;
+ tanx = (xpart pzero)+delta;
+ maxx = -minx;
+ ste = (maxx-minx)/(n+1);
+ z0 = (minx,parab(minx));
+ z1 = ((xpart pzero)-delta,parab((xpart pzero)-delta));
+ z2 = (tanx,parab(tanx));
+ z3 = 0.5[z1,z2];
+ draw z0 for itex=minx+ste step ste until maxx:
+ --(itex,parab(itex)) endfor withcolor blue;
+ draw pzero--z1--z2--cycle;
+ draw pzero--z3;
+ sa = -angle(z1-z2);
+ slope = sind(sa)/cosd(sa);
+ aux = 2*(-slope+(slope++1));
+ z4 = (aux,parab(aux));
+ z6 = z4+whatever*dir(angle(1,deriv(aux)));
+ aux := 2*(-slope-(slope++1));
+ z5 = (aux,parab(aux));
+ z6 = z5+whatever*dir(angle(1,deriv(aux)));
+ draw z6--z4--z5--cycle withcolor red;
+ %draw up withcolor blue;
+ picture scalpic;
+ scalpic = currentpicture;
+ currentpicture := nullpicture;
+ draw scalpic scaled u withpen pencircle scaled 0;
+endfig;
+
+beginfig(3);
+% ParallelProj := true;
+ f := (7, 6, 5);
+% f := (2, 1, 8);
+% f := (7,6,8);
+% f := (0.05,0,9.5);
+% f := (0,9,0);
+ numeric ray, coneray, angrotparab, angrotfoc, steprotfoc, itex, xzer, yzer;
+ numeric tmpxzero, tmpdelta, tmpxtplu, tmpxtmin, stepx;
+ color focus, tmpxaxis, auxca, auxcb, auxcc, auxcd;
+ pen penone;
+ pair auxa, auxb;
+ penone = pencircle scaled 3mm;
+ xzer = 1;
+ yzer = -0.5;
+ stepx = 0.05;
+ ray = 3;
+ revolparab(blue*parab(ray),black,ray);
+ coneray = 4;
+ steprotfoc = 15;
+ focus = (xzer,0,yzer);
+ for angrotfoc=0 step steprotfoc until 360-steprotfoc:
+ angrotparab := 0.5*angrotfoc;
+ tmpxzero := xzer*cosd(angrotparab);
+ tmpxaxis := (cosd(angrotparab),sind(angrotparab),0);
+ z0 = (minx,parab(minx));
+ draw rp(-ray*tmpxaxis+blue*parab(-ray))
+ for itex=-ray+stepx step stepx until ray:
+ --rp(itex*tmpxaxis+blue*parab(itex)) endfor withcolor blue;
+ tmpdelta := sqrt(tmpxzero**2-4*yzer);
+ tmpxtplu := tmpxzero+tmpdelta;
+ tmpxtmin := tmpxzero-tmpdelta;
+ auxca := tmpxtplu*tmpxaxis+blue*parab(tmpxtplu);
+ auxcb := tmpxtmin*tmpxaxis+blue*parab(tmpxtmin);
+ auxa := rp(auxca);
+ auxb := rp(auxcb);
+ auxcc := auxca-focus;
+ auxcd := auxcb-focus;
+ draw auxa withpen penone;
+ draw auxb withpen penone;
+ endfor;
+ draw rp(focus) withpen penone withcolor green;
+ produce_auto_scale;
+endfig;
+
+beginfig(4);
+ numeric major, minor, focdi, rotaroun, steparoun, ra;
+ color majorc, minorc, focdic, garbac, vertec;
+ major = 4;
+ minor = 2.5;
+ f := (-5,0.5,0.4);
+ steparoun = 20;
+ ra = 0.35;
+ focdi = major +-+ minor;
+ majorc = major*red;
+ minorc = minor*green;
+ focdic = -focdi*red;
+ for rotaroun=0.5*steparoun step steparoun until 180-0.5*steparoun:
+ garbac := planarrotation(majorc,minorc,rotaroun);
+ vertec :=0.5[garbac,focdic];
+ revolparab( garbac, vertec, ra );
+ revolparab( (X(garbac),-Y(garbac),0), (X(vertec),-Y(vertec),0), ra );
+ endfor;
+endfig;
+
+beginfig(5);
+ f := (9,6,3);
+ numeric u, slo, delt, higx, lowx, cenx, rai, focz;
+ color cen, foc, low, base;
+ path ell, cir, both;
+ u = 2mm;
+ slo = 0.35;
+ delt = slo ++ 1;
+ lowx = 2*(slo-delt);
+ higx = 2*(slo+delt);
+ rai = 2*delt;
+ drawoptions(withpen pencircle scaled u withcolor blue);
+ revolparab( (0,0,-3), blue, 4 );
+ drawoptions(withpen pencircle scaled u);
+ z4 = (lowx,oloid(lowx));
+ z6 = z4+whatever*dir(angle(1,-deriv(lowx)));
+ z5 = (higx,oloid(higx));
+ z6 = z5+whatever*dir(angle(1,-deriv(higx)));
+ focz = ypart z6;
+ cen = (2*slo,0,ypart 0.5[z4,z5]);
+ foc = (2*slo,0,focz);
+ low = (lowx,0,ypart z4);
+ ell = ellipticpath( cen, low-cen, rai*green );
+ cir = fullcircle scaled u;
+ both = twocyclestogether( ell, cir shifted rp(foc) );
+ draw both;
+ draw ell;
+ draw rp(2*cen-low)--rp(low)--rp(foc)--cycle;
+ %draw rp(cen+rai*green)--rp(cen-rai*green);
+ fill cir shifted rp(black);
+ base = (2*slo,0,-3);
+ draw rigorouscircle( base, blue, rai );
+ draw rp(base)--rp(foc) dashed withdots withcolor red;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/rosadosventos.mp b/Master/texmf-dist/doc/metapost/featpost/example/rosadosventos.mp
new file mode 100644
index 00000000000..a709d29399a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/rosadosventos.mp
@@ -0,0 +1,52 @@
+% rosadosventos.mp
+% L. Nobre G.
+% 2013
+
+prologues := 1;
+
+def getcrossingscale( expr Ang, Lev ) =
+ begingroup
+ numeric angoflevel;
+ pair tmpair, northpoi, levelpoi;
+ angoflevel = 90-180/(2**Lev);
+ northpoi = (0,1);
+ levelpoi = dir(angoflevel);
+ tmpair = northpoi+whatever*dir(Ang-90);
+ tmpair = levelpoi+whatever*dir(angoflevel-Ang);
+ ( cosd(Ang)*abs(levelpoi-tmpair) )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric level, i, j, ang, u, scal, penscal, startang;
+ path basetriang, worktriang;
+ color fillcol;
+ pen pathpen;
+ pair shiftvec;
+ level = 4;
+ ang = 18;
+ u = 7cm;
+ fillcol = (0.77,0.88,0.99);
+ penscal = 50;
+ pathpen = pencircle scaled (u/penscal);
+ basetriang = (0,1)--(-sind(ang)/cosd(ang),0)--(sind(ang)/cosd(ang),0)--cycle;
+ basetriang := basetriang scaled u;
+ fill basetriang withcolor fillcol;
+ fill basetriang rotated 180 withcolor fillcol;
+ draw basetriang withpen pathpen;
+ draw basetriang rotated 180 withpen pathpen;
+ for i=1 upto level:
+ scal := getcrossingscale( ang, i );
+ shiftvec := (0,u*(1-scal));
+ worktriang := basetriang scaled scal shifted shiftvec rotated -90;
+ startang := -90+360/(2**(i+1));
+ for j=startang step 360/(2**i) until 270:
+ fill worktriang rotated j withcolor (fillcol/(2**i));
+ draw worktriang rotated j withpen pathpen;
+ endfor;
+ endfor;
+endfig;
+
+end.
+
+ \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/solarconcentrator.mp b/Master/texmf-dist/doc/metapost/featpost/example/solarconcentrator.mp
new file mode 100644
index 00000000000..af05771602f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/solarconcentrator.mp
@@ -0,0 +1,64 @@
+% solarconcentrator.mp
+% L. Nobre G.
+% 2013
+
+prologues := 1;
+
+input featpost3Dplus2D;
+
+color actpoi, actdir, actperp;
+boolean finish;
+
+%def findintersection( expr SourcePoi, RayDir ) =
+% begingroup
+%
+% endgroup
+%enddef;
+
+vardef reflectrayr(expr sourcepoi, raydir )=
+ save J, Perp, newdir, cropro, tandir, theangle;
+ color J, Perp, newdir, cropro, tandir;
+ numeric theangle;
+ findintersection( sourcepoi, raydir );
+ if not finish:
+ draw rp(sourcepoi)--rp(actpoi);
+ theangle = 180-getangle( raydir, actperp );
+ if theangle<0.5: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DANGER!
+ cropro = ncrossprod( raydir, actperp );
+ tandir = ncrossprod( actperp, cropro );
+ newdir = planarrotation( actperp, tandir, theangle );
+ else:
+ newdir = actperp;
+ fi;
+ reflectrayr( actpoi, newdir );
+ else:
+ J=sourcepoi+raydir;
+ drawarrow rp(sourcepoi)--rp(J);
+ finish := false;
+ fi;
+enddef;
+
+beginfig(1);
+ f := (6,4,5);
+ numeric iz, jang, numcircs, zcoord;
+ numcircs = 10;
+ draw rp((1,0,1))--rp(red)--rp(-red)--rp((-1,0,1));
+ for iz=1 upto numcircs:
+ zcoord := iz/numcircs;
+ draw
+ rp((1-zcoord,zcoord,zcoord))--rp((zcoord-1,zcoord,zcoord))..
+ for jang=5 step 5 until 175:
+ rp((zcoord-1-zcoord*sind(jang),zcoord*cosd(jang),zcoord))..
+ endfor
+ rp((zcoord-1,-zcoord,zcoord))--rp((1-zcoord,-zcoord,zcoord))..
+ for jang=5 step 5 until 175:
+ rp((1-zcoord+zcoord*sind(jang),-zcoord*cosd(jang),zcoord))..
+ endfor
+ cycle;
+ endfor;
+ draw rp(red)--rp((0,1,1))--rp(-red)--rp((0,-1,1))--cycle;
+endfig;
+
+
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/solardish.mp b/Master/texmf-dist/doc/metapost/featpost/example/solardish.mp
new file mode 100644
index 00000000000..2d5bbf5f7d3
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/solardish.mp
@@ -0,0 +1,112 @@
+% solardish.mp
+% L. Nobre G.
+% 2013
+
+prologues := 1;
+
+vardef reflectrayr(expr s,a,p,l)=
+ save tI,tn,ia,I,J;
+ pair I,J;
+ tI=xpart(p intersectiontimes ((s+1mm*dir(a))--(s+30cm*dir(a))));
+ if tI>0:
+ I=point tI of p;
+ draw s--I;
+ tn=angle(direction tI of p)+90;
+ ia:=tn-angle(s-I);
+ reflectrayr(I,tn+ia,p,l);
+ else:
+ J=s+dir(a)*l;
+ drawarrow s--J;
+ fi;
+enddef;
+
+beginfig(1); % parabolic dish
+ numeric u, i, num, calx, incidang;
+ pair sunpoi;
+ u = 8cm;
+ num = 12;
+ incidang = -60;
+ path p;
+ p=(-2u,u) for i=1 upto 2num:
+ hide( calx:=-2+2*i/num; )
+ ..(calx*u,u*(calx**2)/4)
+ endfor;
+ for i=1 upto 2num-1:
+ sunpoi := ((-2+2*i/num,1)*u)-u*dir(incidang);
+ reflectrayr(sunpoi,incidang,p,14cm);
+ endfor;
+ draw p withcolor red;
+endfig;
+
+beginfig(2); % circle evolute dish
+ numeric u, i, num, calc, incidang, panray;
+ pair sunpoi, crosa, crosb;
+ u = 8cm; % this value is related with "14cm" inside reflectray
+ num = 12;
+ incidang = -60;
+ panray = 2cm;
+ path p, q, w;
+ w = fullcircle scaled 2panray shifted (0,u-panray);
+ p=(0,u-2panray) for i=1 upto num:
+ hide(
+ calc:=(i/num)*panray*3.14159;
+ sunpoi := (0,u-panray)+dir(i*180/num-90)*panray-calc*dir(i*180/num);
+ )
+ ..sunpoi
+ endfor;
+ q = reverse (p xscaled -1) & p;
+ sunpoi := (xpart point 2 of q,u)-u*dir(incidang);
+ crosa = sunpoi+whatever*dir(incidang);
+ crosa = (0,u-panray)-whatever*dir(incidang+90);
+ crosb = ((0,u-panray)--crosa) intersectionpoint w;
+ for i=0 upto num:
+ sunpoi := (i/num)[crosa,crosb]-u*dir(incidang);
+ reflectrayr(sunpoi,incidang,q,5cm);
+ endfor;
+ pair crosa;
+ sunpoi := (xpart point ((length q)-2) of q,u)-u*dir(incidang);
+ crosa = sunpoi+whatever*dir(incidang);
+ crosa = (0,u-panray)-whatever*dir(incidang+90);
+ crosb := ((0,u-panray)--crosa) intersectionpoint w;
+ for i=0 upto num:
+ sunpoi := (i/num)[crosa,crosb]-u*dir(incidang);
+ reflectrayr(sunpoi,incidang,q,5cm);
+ endfor;
+ draw q withcolor red;
+ fill w withcolor 0.5white;
+endfig;
+
+beginfig(3); % spheric dish
+ numeric u, i, num, incidang;
+ pair sunpoi;
+ u = 8cm;
+ num = 12;
+ incidang = -60;
+ path p;
+ p = halfcircle scaled 4u rotated 180 shifted (0,u);
+ for i=1 upto 2num-1:
+ sunpoi := ((-2+2*i/num,1)*u)-u*dir(incidang);
+ reflectrayr(sunpoi,incidang,p,14cm);
+ endfor;
+ draw p withcolor red;
+endfig;
+
+beginfig(4); % elliptic dish
+ numeric u, i, num, cal, incidang;
+ pair sunpoi;
+ u = 8cm;
+ num = 12;
+ incidang = -55;
+ path p;
+ p=(-2u,u) for i=1 upto 2num:
+ hide( cal:=90*i/num; )
+ ..(-2*cosd(cal)*u,u-u*sind(cal))
+ endfor;
+ for i=1 upto 2num-1:
+ sunpoi := ((-2+2*i/num,1)*u)-u*dir(incidang);
+ reflectrayr(sunpoi,incidang,p,14cm);
+ endfor;
+ draw p withcolor red;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/torus.mp b/Master/texmf-dist/doc/metapost/featpost/example/torus.mp
index 8329f5a27fa..bc0f99cc74d 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/torus.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/torus.mp
@@ -1,6 +1,6 @@
-% torus
+% torus.mp
% L. Nobre G.
-% 20013
+% 2014
input featpost3Dplus2D;
@@ -200,24 +200,31 @@ beginfig(2);
endfig;
beginfig(1);
- f := ( 3,1,1 );
- Spread := 110;
- NP:=500;
- 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;
+ color tmpcolor;
+ string tmpstr;
+ Nobjects := 0;
+ f := ( 3,1,1 );
+ Spread := 110;
+ NP:=624;
+ 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);
+ tmpcolor := (first,second,third);
+ tmpstr := cstr( tmpcolor );
+ getready("signalvertex(" & tmpstr &
+ ",1,black);signalvertex(" & tmpstr & ",0.7,white);", tmpcolor );
+ endfor;
+ doitnow;
endfig;
beginfig(6);
@@ -276,9 +283,9 @@ beginfig(6);
draw holepic;
draw opath withcolor green;
draw ipath withcolor red;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Perhaps there is an analytic way of getting the angle of the cusp point? %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% There is an analytic way of getting the angle of the cusp point! %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
i := ceiling(1+180/angstep);
forever:
i := incr( i );
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/torusexperiment.mp b/Master/texmf-dist/doc/metapost/featpost/example/torusexperiment.mp
new file mode 100644
index 00000000000..e9ad366138a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/torusexperiment.mp
@@ -0,0 +1,152 @@
+% torusexperiment.mp
+% L. Nobre G.
+% 2014
+
+% DO NOT CHANGE PARAMETERS. YOU HAVE BEEN WARNED!
+
+prologues := 1;
+input featpost3Dplus2D;
+%SphericalDistortion := true;
+%ParallelProj := true;
+beginfig(1);
+ Spread:=70;
+ 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;
+ color hvec, fakef, visualcircenter, hvecf, perpvec, axisvec;
+ numeric rratio, hratio, visualray, resultang;
+ numeric fakedist, fakeangle, fakeviewlimitangle, tmpangle;
+ markpen = pencircle scaled 5pt;
+ pickup markpen;
+ bigray = 5;
+ smaray = 1;
+ %message "Villarceau angle: " & decimal(angle(bigray+-+smaray,smaray));
+ message "Actual view angle: " & decimal(angle(X(f)++Y(f),Z(f)));
+ angstep= 0.5;
+ toruscenter = black;
+ torusmoment = (0,0,1);
+ % f := (3,-6,3);
+ %%%%%%%%%%%%%%%%%%%%%%%%%%% f := 3*(0,4.24706,0.67267); fakedist = 7.3;
+ f := (7,4,2); fakedist = 4.3; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ fakeangle = 9;
+ fakeviewlimitangle = 2;
+% fakef = (0,4,3);
+% fakef = f;
+% fakef = (-Y(f),X(f),Z(f));
+ fakef = (0,fakedist*cosd(fakeangle),fakedist*sind(fakeangle));
+ %show fakef;
+ %endfig;
+ %end.
+ if cdotprod(f-viewcentr,torusmoment)<0 :
+ torusmoment := -torusmoment;
+ fi;
+ 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;
+ hvec = cdotprod(f-toruscenter,N(torusmoment))*N(torusmoment);
+ hratio = conorm(hvec)/bigray;
+ rratio = conorm(f-toruscenter-hvec)/bigray;
+ 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 ipath withcolor red;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 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;
+ resultang = anglim+angstep*(i-1);
+ write decimal(smaray/bigray) & " " & decimal(rratio) & " " & decimal(hratio) & " " & decimal(resultang) to "torusexperimentoneline.dat";
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 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;
+ hvecf = cdotprod(fakef-toruscenter,N(torusmoment))*N(torusmoment);
+ visualcircenter = 0.5[toruscenter+hvecf,fakef];
+ axisvec = fakef-visualcircenter;
+ visualray = conorm( axisvec );
+ perpvec = ncrossprod(axisvec,torusmoment)*visualray;
+ color tmpf, tmpc, tmpp[], tmpq[], tmpa, tmpv;
+ numeric theta, alpha, beta;
+ tmpv = N(torusmoment);
+ i := 0;
+ drawoptions( withcolor blue withpen pencircle scaled 5pt );
+ for theta=2*anglim step angstep until -2*anglim:
+ tmpf := visualcircenter+planarrotation( axisvec, perpvec, theta );
+ tmpa := N( planarrotation( axisvec, perpvec, theta/2 ) );
+ tmpc := toruscenter+tmpa*bigray;
+ beta := getangle(tmpa,tmpf-tmpc);
+ alpha := angle( smaray, conorm( tmpf-tmpc ) +-+ smaray ); %%%%%%%%%%%%
+ tmpp[i] := tmpc + smaray*planarrotation( -tmpa, tmpv, 180-alpha-beta );
+ tmpq[i] := tmpc + smaray*planarrotation( -tmpa, tmpv, 180+alpha-beta );
+ if i>0:
+ tmpangle := getangle(tmpp[i]-tmpp[i-1],tmpp[i]-fakef);
+ %write decimal(i) & " " & decimal(tmpangle) to "torusexperimentangles.dat";
+ if (tmpangle<fakeviewlimitangle) or (180-tmpangle<fakeviewlimitangle):
+ draw rp(tmpp[i])--rp(fakef) withpen pencircle scaled 0pt;
+ fi;
+ fi;
+ i := incr(i);
+ endfor;
+ draw rp(fakef);
+ if smaray>bigray:
+ draw rp(toruscenter+tmpv*(smaray+-+bigray));
+ draw rp(toruscenter-tmpv*(smaray+-+bigray));
+ fi;
+ ind := i-1;
+ drawoptions();
+ pickup pencircle scaled 0pt;
+ draw rp(fakef)--rp((X(fakef),Y(fakef),0))--rp((0,bigray,0))--cycle dashed evenly;
+ draw goodcirclepath((0,bigray,0),red,smaray) dashed evenly;
+ draw for i=0 upto ind: rp(tmpp[i]).. endfor cycle;
+ draw for i=0 upto ind: rp(tmpq[i]).. endfor cycle;
+ pickup pencircle scaled 2pt;
+ draw spatialhalfcircle( toruscenter, torusmoment, bigray+smaray, true );
+ %draw rigorouscircle( toruscenter, torusmoment, bigray-smaray );
+ draw rigorouscircle( toruscenter+smaray*tmpv, torusmoment, bigray );
+ %draw rigorouscircle( toruscenter-smaray*tmpv, torusmoment, bigray );
+ picture tmppicture;
+ path zoomwindow;
+ zoomwindow = (550,230)--(750,230)--(750,330)--(550,330)--cycle;
+ tmppicture = currentpicture;
+ clip tmppicture to zoomwindow;
+endfig;
+
+beginfig(2);
+ draw tmppicture scaled 4;
+endfig;
+
+end.
+
+
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/trebuchet.mp b/Master/texmf-dist/doc/metapost/featpost/example/trebuchet.mp
index bcd0311d59c..b9d81babd29 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/trebuchet.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/trebuchet.mp
@@ -1,8 +1,12 @@
% trebuchet.mp
% L. Nobre G.
-% 2012
+% 2014
-prologues := 1;
+%prologues := 1;
+%outputformat := "png";
+%outputformatoptions := "format=rgb antialias=best";
+%hppp := 0.25;
+%vppp := 0.25;
beginfig(1);
numeric i, s, a, u, h, t;
@@ -29,4 +33,4 @@ beginfig(1);
draw pi--pk withcolor 0.5white;
endfor;
endfig;
-end. \ No newline at end of file
+end.
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/twoDcolision.mp b/Master/texmf-dist/doc/metapost/featpost/example/twoDcolision.mp
new file mode 100644
index 00000000000..5d9b378163a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/twoDcolision.mp
@@ -0,0 +1,59 @@
+% twoDcolision.mp
+% L. Nobre G.
+% 2013
+
+verbatimtex \documentclass{article}\begin{document} etex;
+
+beginfig(1);
+ ahangle := 30;
+ numeric angthe, angalf, xpoin;
+ numeric radthe, vini;
+ numeric ysize, xsize, margs, units, i, dim;
+ pair vone, vinic, vtwo;
+ path xaxis, yaxis, vonep, vinicp, vtwop, auxil;
+ pen thick, usual, vthin;
+ angthe = 65;
+ dim = 50;
+ units = 0.8mm;
+ ahlength := 2.5units;
+ margs = 8units;
+ xsize = 75units;
+ ysize = 40units;
+ radthe = 23units;
+ vini = xsize-2.5*margs;
+ thick = pencircle scaled 0.5units;
+ usual = pencircle scaled 0.2units;
+ vthin = pencircle scaled 0.1units;
+ yaxis = ( 0, -vini/2 )--( 0, ysize-margs );
+ xaxis = ( -margs, 0 )--( xsize-margs, 0 );
+ pickup usual;
+ drawarrow xaxis;
+ label.bot( btex $x$ etex, point 1 of xaxis );
+ drawarrow yaxis;
+ label.lft( btex $y$ etex, point 1 of yaxis );
+ pickup thick;
+ vinic = vini*right;
+ vinicp = origin--vinic;
+ drawarrow vinicp;
+ label.urt( btex $\vec{v}_i$ etex, vinic );
+ vone = vini*cosd(angthe)*dir(angthe);
+ vonep = origin--vone;
+ drawarrow vonep;
+ label.ulft( btex $\vec{v}_1$ etex, vone );
+ vtwo = vini*sind(angthe)*dir(angthe-90);
+ vtwop = origin--vtwo;
+ drawarrow vtwop;
+ label.lrt( btex $\vec{v}_2$ etex, vtwo );
+ pickup vthin;
+ draw fullcircle scaled radthe cutafter vonep;
+ draw fullcircle scaled vini shifted (vinic/2);
+ label.urt( btex $\Theta$ etex, ( radthe/2, 0 ) );
+ z1 = dir(angthe)*margs/2;
+ z2 = dir(angthe-45)*margs/sqrt(2);
+ z3 = dir(angthe-90)*margs/2;
+ draw z1--z2--z3;
+endfig;
+
+verbatimtex \end{document} etex
+
+end;
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/twosolarpanels.mp b/Master/texmf-dist/doc/metapost/featpost/example/twosolarpanels.mp
new file mode 100644
index 00000000000..6913fb0c95f
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/twosolarpanels.mp
@@ -0,0 +1,85 @@
+% twosolarpanels.mp
+% L. Nobre G.
+% 2014
+
+input featpost3Dplus2D;
+
+f := (2.7,5,2);
+Spread := 170;
+color poi[], colthr, coltwo;
+pen penthr, pentwo;
+numeric projx, projy, projz;
+penthr = pencircle scaled 2.4pt;
+pentwo = pencircle scaled 1.0pt;
+colthr = blue;
+coltwo = black;
+projx = -0.5;
+projy = -1;
+projz = -0.5;
+
+def drawonesegmentmanytimes( expr poia, poib ) =
+ begingroup
+ draw rp((projx,Y(poia),Z(poia)))--rp((projx,Y(poib),Z(poib))) withpen pentwo withcolor coltwo;
+ draw rp((X(poia),projy,Z(poia)))--rp((X(poib),projy,Z(poib))) withpen pentwo withcolor coltwo;
+ draw rp((X(poia),Y(poia),projz))--rp((X(poib),Y(poib),projz)) withpen pentwo withcolor coltwo;
+ draw rp(poia)--rp(poib) withpen penthr withcolor colthr
+ endgroup
+enddef;
+
+vardef segments( text t ) =
+ color tmpcol[];
+ numeric tmpnum, i;
+ tmpnum := 0;
+ forsuffixes $=t:
+ tmpnum := tmpnum+1;
+ tmpcol[tmpnum] = poi$;
+ endfor;
+ for i=1 upto tmpnum-1:
+ drawonesegmentmanytimes(tmpcol[i],tmpcol[i+1]);
+ endfor
+enddef;
+
+beginfig(1);
+ numeric fac;
+ fac = 0.5*sqrt(2);
+ numeric panelangle, roofangle, panelwid, panellen;
+ panelangle = 61;
+ roofangle = 22;
+ panelwid = 0.5;
+ panellen = 0.8;
+ numeric panelz, panelx;
+ panelz = panellen*sind(panelangle);
+ panelx = panellen*cosd(panelangle);
+ numeric forwarddescent, backwardascent, middledescent;
+ forwarddescent = panelwid*fac*sind(roofangle)/cosd(roofangle);
+ backwardascent = panelx*fac*sind(roofangle)/cosd(roofangle);
+ middledescent = (panelwid-panelx)*fac*sind(roofangle)/cosd(roofangle);
+ poi1 = (panelwid,0,panelz);
+ poi2 = (panelwid,panelwid,panelz);
+ poi3 = (0,panelwid,panelz);
+ poi4 = (panelwid,0,backwardascent);
+ poi5 = (0,panelwid,backwardascent);
+ poi6 = (panelwid+panelx,0,0);
+ poi7 = (panelwid+panelx,panelwid,0);
+ poi8 = (panelwid,panelwid,0);
+ poi9 = (panelwid,panelwid+panelx,0);
+ poi10= (0,panelwid+panelx,0);
+ poi11= (panelwid,panelwid,-middledescent);
+ poi12= (panelwid+panelx,panelwid,-forwarddescent);
+ poi13= (panelwid,panelx+panelwid,-forwarddescent);
+ segments( 6, 12, 11, 13, 10 );
+ segments( 12, 7, 8, 9, 13 );
+ segments( 7, 6, 1, 2, 7 );
+ segments( 9, 10, 3, 2, 9 );
+ segments( 11, 8, 2 );
+ segments( 6, 4, 1 );
+ segments( 10, 5, 3 );
+ segments( 1, 3 );
+ segments( 12, 4, 5, 13 );
+ segments( 6, 10 );
+ segments( 4, 11, 5 );
+ unfill rp(poi7)--rp(poi6)--rp(poi1)--rp(poi2)--cycle;
+ unfill rp(poi9)--rp(poi10)--rp(poi3)--rp(poi2)--cycle;
+endfig;
+
+end. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/38.1.png b/Master/texmf-dist/doc/metapost/featpost/png/38.1.png
index 7435ca7f927..bd699b4eaf7 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/38.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/38.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.1.png b/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.1.png
index d99a8ddef33..79634c3bec7 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.2.png b/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.2.png
index 710ae66f453..dd6b2c859f8 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/aledlogo.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/antimattermeteor.1.png b/Master/texmf-dist/doc/metapost/featpost/png/antimattermeteor.1.png
index d23eeebc31d..e42f36ba875 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/antimattermeteor.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/antimattermeteor.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/avalzero.2.png b/Master/texmf-dist/doc/metapost/featpost/png/avalzero.2.png
index 25d7e2e9643..0aba9b9dfbb 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/avalzero.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/avalzero.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.0.png b/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.0.png
new file mode 100644
index 00000000000..42d65ead637
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.0.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.1.png b/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.1.png
deleted file mode 100644
index 925a6c5e249..00000000000
--- a/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.1.png
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.9.png b/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.9.png
new file mode 100644
index 00000000000..30e63b6a7b6
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/balllauncher.9.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/beautiful00.1.png b/Master/texmf-dist/doc/metapost/featpost/png/beautiful00.1.png
new file mode 100644
index 00000000000..6a110084991
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/beautiful00.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/canschemes.2.png b/Master/texmf-dist/doc/metapost/featpost/png/canschemes.2.png
index c7607e3bacd..56dbb8faa41 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/canschemes.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/canschemes.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/cinemwork.1.png b/Master/texmf-dist/doc/metapost/featpost/png/cinemwork.1.png
index 3f5cf81ccde..87c33495d99 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/cinemwork.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/cinemwork.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/cylinderborders.1.png b/Master/texmf-dist/doc/metapost/featpost/png/cylinderborders.1.png
new file mode 100644
index 00000000000..bcd9a68e8de
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/cylinderborders.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/daliasensor.1.png b/Master/texmf-dist/doc/metapost/featpost/png/daliasensor.1.png
index 4b64a6d5c5a..31621f25b0f 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/daliasensor.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/daliasensor.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.1.png b/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.1.png
new file mode 100644
index 00000000000..8083c8bdc00
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.2.png b/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.2.png
new file mode 100644
index 00000000000..e59edd59635
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/dreamhouse.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/electrospiral.1.png b/Master/texmf-dist/doc/metapost/featpost/png/electrospiral.1.png
index f9bf984df0d..6a37801f292 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/electrospiral.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/electrospiral.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/fallinthewind.1.png b/Master/texmf-dist/doc/metapost/featpost/png/fallinthewind.1.png
index 883e0b0c44d..a69f312b089 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/fallinthewind.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/fallinthewind.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/fis1prex.1.png b/Master/texmf-dist/doc/metapost/featpost/png/fis1prex.1.png
index e3d429dd267..adf04fdbfb9 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/fis1prex.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/fis1prex.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/gausslawframe.1.png b/Master/texmf-dist/doc/metapost/featpost/png/gausslawframe.1.png
index 086f478142c..e923f81b935 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/gausslawframe.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/gausslawframe.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/gnupost3Dlogo.1.png b/Master/texmf-dist/doc/metapost/featpost/png/gnupost3Dlogo.1.png
index 17bf2d1db24..250b443808e 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/gnupost3Dlogo.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/gnupost3Dlogo.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/graphexample.1.png b/Master/texmf-dist/doc/metapost/featpost/png/graphexample.1.png
index c1d8cae4590..a60b4fb5cb5 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/graphexample.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/graphexample.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/hap.1.png b/Master/texmf-dist/doc/metapost/featpost/png/hap.1.png
index 95aaeb5da34..0af3e65eb2c 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/hap.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/hap.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.1.png b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.1.png
new file mode 100644
index 00000000000..4b987337ade
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.2.png b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.2.png
new file mode 100644
index 00000000000..8713f214545
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.3.png b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.3.png
new file mode 100644
index 00000000000..1fa59b5cc67
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/hexagonalgrid.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/iamsorrykarl.1.png b/Master/texmf-dist/doc/metapost/featpost/png/iamsorrykarl.1.png
index fdb871c9cdb..d6b5e28ac3a 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/iamsorrykarl.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/iamsorrykarl.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/integerbars.1.png b/Master/texmf-dist/doc/metapost/featpost/png/integerbars.1.png
index e68c5628d3f..2fa27db9c83 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/integerbars.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/integerbars.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/intersectorus.1.png b/Master/texmf-dist/doc/metapost/featpost/png/intersectorus.1.png
new file mode 100644
index 00000000000..f4068117b34
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/intersectorus.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/keplernewtonfeynman.1.png b/Master/texmf-dist/doc/metapost/featpost/png/keplernewtonfeynman.1.png
index e1cbf503b2a..2f453f9a5a6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/keplernewtonfeynman.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/keplernewtonfeynman.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/kindofcube.1.png b/Master/texmf-dist/doc/metapost/featpost/png/kindofcube.1.png
index dd209933147..b959bf65cc8 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/kindofcube.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/kindofcube.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/lasermachine.1.png b/Master/texmf-dist/doc/metapost/featpost/png/lasermachine.1.png
index 33ba302e19b..3520225225d 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/lasermachine.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/lasermachine.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/ledlogo.3.png b/Master/texmf-dist/doc/metapost/featpost/png/ledlogo.3.png
index 7e4172a3b07..3a692490f5a 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/ledlogo.3.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/ledlogo.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.2.png b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.2.png
index 1ee3d8260a5..4c0edfac9a2 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.3.png b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.3.png
index 4c0edfac9a2..1ee3d8260a5 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.3.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.4.png b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.4.png
new file mode 100644
index 00000000000..f05511c80c8
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/lgc2refractionEdited.4.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/lowcostgreenhouse.1.png b/Master/texmf-dist/doc/metapost/featpost/png/lowcostgreenhouse.1.png
new file mode 100644
index 00000000000..19625c04777
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/lowcostgreenhouse.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.1.png b/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.1.png
index 2260df39504..4857ee8cce3 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.2.png b/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.2.png
index 72cfed99583..1b044b7598a 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/magneticflux.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/manjusha.6.png b/Master/texmf-dist/doc/metapost/featpost/png/manjusha.6.png
index 5cacff66ba7..59292550e95 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/manjusha.6.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/manjusha.6.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.1.png b/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.1.png
index 9d90d71e8aa..f6a63fefcb6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.2.png b/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.2.png
new file mode 100644
index 00000000000..f636834ec5d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/milimetricpaper.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nembends.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nembends.1.png
index fe9cb38d729..36621d9095b 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nembends.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nembends.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nembiaxi.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nembiaxi.1.png
index bba47e8a9ca..2251083acab 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nembiaxi.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nembiaxi.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nemdirector.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nemdirector.1.png
index 4d07f7e78f7..b457eee3da8 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nemdirector.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nemdirector.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nemquira.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nemquira.1.png
index bf12a455f27..361251b9ff3 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nemquira.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nemquira.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nemquirapitch.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nemquirapitch.1.png
index 19f83713108..0e5ccb314a4 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nemquirapitch.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nemquirapitch.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nemsaddl.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nemsaddl.1.png
index 34ea717f9dd..15288564c13 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nemsaddl.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nemsaddl.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nemuniax.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nemuniax.1.png
index e0abfbbb14b..c431f3d8ce2 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nemuniax.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nemuniax.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nsmetica.1.png b/Master/texmf-dist/doc/metapost/featpost/png/nsmetica.1.png
index d0aaa825fd9..b82493bb316 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nsmetica.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nsmetica.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.2.png b/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.2.png
index 653c034ff64..e025c2bd603 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.4.png b/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.4.png
index a7d74615b9e..015a21b95d3 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.4.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/nulldefectanglexample.4.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/photoreverse.1.png b/Master/texmf-dist/doc/metapost/featpost/png/photoreverse.1.png
index 25bfe0d621c..39c2f46f162 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/photoreverse.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/photoreverse.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/positivecharge.1.png b/Master/texmf-dist/doc/metapost/featpost/png/positivecharge.1.png
index 050fcef7a60..07ec8759520 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/positivecharge.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/positivecharge.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/potenciadecicloeliptico.1.png b/Master/texmf-dist/doc/metapost/featpost/png/potenciadecicloeliptico.1.png
index 8e5e105aa91..732b04e8f92 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/potenciadecicloeliptico.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/potenciadecicloeliptico.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/project.1.png b/Master/texmf-dist/doc/metapost/featpost/png/project.1.png
index 344bdc2ea30..01818150fd5 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/project.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/project.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/qap.1.png b/Master/texmf-dist/doc/metapost/featpost/png/qap.1.png
index 7bf5100672b..b178d737c79 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/qap.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/qap.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.5.png b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.5.png
index 24c7be6db10..5308faee665 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.5.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.5.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.7.png b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.7.png
new file mode 100644
index 00000000000..6ea3bce2497
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.7.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.8.png b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.8.png
new file mode 100644
index 00000000000..2cbc2b2d663
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.8.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.9.png b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.9.png
new file mode 100644
index 00000000000..24c7be6db10
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/raiodoscirculos.9.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/resistcircuit.1.png b/Master/texmf-dist/doc/metapost/featpost/png/resistcircuit.1.png
index 14469be877b..80ed3471dae 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/resistcircuit.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/resistcircuit.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.1.png b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.1.png
new file mode 100644
index 00000000000..5b9fcdddb3a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.2.png b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.2.png
new file mode 100644
index 00000000000..8cacf808ed5
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.3.png b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.3.png
new file mode 100644
index 00000000000..5563b252e0d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.4.png b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.4.png
new file mode 100644
index 00000000000..27c0fc4dcee
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.4.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.5.png b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.5.png
new file mode 100644
index 00000000000..d6a7f1a3d4b
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/revolutionparaboloid.5.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/rigorousdiscSD.1.png b/Master/texmf-dist/doc/metapost/featpost/png/rigorousdiscSD.1.png
index c656ee7d2cf..11d0bf40c54 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/rigorousdiscSD.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/rigorousdiscSD.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/rmnbob.1.png b/Master/texmf-dist/doc/metapost/featpost/png/rmnbob.1.png
index e9e311f4928..2999fc0ab5e 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/rmnbob.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/rmnbob.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/rodarolaremplaninc.1.png b/Master/texmf-dist/doc/metapost/featpost/png/rodarolaremplaninc.1.png
index 336910fb2ba..17716e42e3d 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/rodarolaremplaninc.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/rodarolaremplaninc.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/rosadosventos.1.png b/Master/texmf-dist/doc/metapost/featpost/png/rosadosventos.1.png
new file mode 100644
index 00000000000..1292c3134d1
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/rosadosventos.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/sap.1.png b/Master/texmf-dist/doc/metapost/featpost/png/sap.1.png
index 543d2d9d45a..bcb28df1db0 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/sap.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/sap.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/simplecenterofmass.1.png b/Master/texmf-dist/doc/metapost/featpost/png/simplecenterofmass.1.png
index 44a8f5118c2..4a53aef84da 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/simplecenterofmass.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/simplecenterofmass.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/sincityredesigned.2.png b/Master/texmf-dist/doc/metapost/featpost/png/sincityredesigned.2.png
index 319b40b2156..9d3bdc8d072 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/sincityredesigned.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/sincityredesigned.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/slingshot.1.png b/Master/texmf-dist/doc/metapost/featpost/png/slingshot.1.png
index 55b1fc12c79..65d46c7021a 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/slingshot.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/slingshot.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/solarconcentrator.1.png b/Master/texmf-dist/doc/metapost/featpost/png/solarconcentrator.1.png
new file mode 100644
index 00000000000..82731b260fa
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/solarconcentrator.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/solardish.1.png b/Master/texmf-dist/doc/metapost/featpost/png/solardish.1.png
new file mode 100644
index 00000000000..23456eb91fb
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/solardish.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/solardish.2.png b/Master/texmf-dist/doc/metapost/featpost/png/solardish.2.png
new file mode 100644
index 00000000000..e6f460e44e4
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/solardish.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/solardish.3.png b/Master/texmf-dist/doc/metapost/featpost/png/solardish.3.png
new file mode 100644
index 00000000000..54b57236955
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/solardish.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/solardish.4.png b/Master/texmf-dist/doc/metapost/featpost/png/solardish.4.png
new file mode 100644
index 00000000000..b9170f35c81
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/solardish.4.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/spaceinvader.2.png b/Master/texmf-dist/doc/metapost/featpost/png/spaceinvader.2.png
index 6e51ae8bccb..1c28bab16f4 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/spaceinvader.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/spaceinvader.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/splineperspective.5.png b/Master/texmf-dist/doc/metapost/featpost/png/splineperspective.5.png
index 79462b74573..98978b7af8f 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/splineperspective.5.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/splineperspective.5.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.1.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.1.png
index 34da8ce67ae..eae77d8884c 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.2.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.2.png
index 883870089be..15e0d8ac16e 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.2.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.3.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.3.png
index cdc00d06f2e..a21b5391544 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.3.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.6.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.6.png
index 339e672d11c..86db99d14f6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.6.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.6.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.7.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.7.png
index 0b673b66f9a..26597b628f7 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.7.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.7.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.8.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.8.png
index 24cba6c8275..39a09922d0c 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.8.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.8.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.9.png b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.9.png
index aef874b383a..30da9fe9b37 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.9.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/srinathpolineni.9.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/strength1defect.1.png b/Master/texmf-dist/doc/metapost/featpost/png/strength1defect.1.png
index ccc81bd9eeb..b45a4a14dba 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/strength1defect.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/strength1defect.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/tdarrow.1.png b/Master/texmf-dist/doc/metapost/featpost/png/tdarrow.1.png
index ca1cfe78c36..46ee84d49c0 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/tdarrow.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/tdarrow.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/torus.3.png b/Master/texmf-dist/doc/metapost/featpost/png/torus.3.png
index 42fdbf36a0f..08d735ebbfa 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/torus.3.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/torus.3.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.1.png b/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.1.png
new file mode 100644
index 00000000000..0772d20e91a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.2.png b/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.2.png
new file mode 100644
index 00000000000..5b6338bc6e2
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/torusexperiment.2.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/trianglecenterofmass.1.png b/Master/texmf-dist/doc/metapost/featpost/png/trianglecenterofmass.1.png
index 6a39ddbedca..8e87ac240b6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/trianglecenterofmass.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/trianglecenterofmass.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/trigonometry.1.png b/Master/texmf-dist/doc/metapost/featpost/png/trigonometry.1.png
index a7ed51b00d5..df41d9dbdbb 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/trigonometry.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/trigonometry.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/tuftescatter.1.png b/Master/texmf-dist/doc/metapost/featpost/png/tuftescatter.1.png
index 970e26063fd..4cc7e22a6db 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/tuftescatter.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/tuftescatter.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/twoDcolision.1.png b/Master/texmf-dist/doc/metapost/featpost/png/twoDcolision.1.png
new file mode 100644
index 00000000000..09125505c2d
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/twoDcolision.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/twosolarpanels.1.png b/Master/texmf-dist/doc/metapost/featpost/png/twosolarpanels.1.png
new file mode 100644
index 00000000000..1aa25614225
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/png/twosolarpanels.1.png
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/featpost/png/xcmplaca2buraquads.1.png b/Master/texmf-dist/doc/metapost/featpost/png/xcmplaca2buraquads.1.png
index 74196035df8..bf23daad097 100644
--- a/Master/texmf-dist/doc/metapost/featpost/png/xcmplaca2buraquads.1.png
+++ b/Master/texmf-dist/doc/metapost/featpost/png/xcmplaca2buraquads.1.png
Binary files differ
diff --git a/Master/texmf-dist/metapost/featpost/featpost3Dplus2D.mp b/Master/texmf-dist/metapost/featpost/featpost3Dplus2D.mp
index 8a005bfd6d4..52a5f7789ed 100644
--- a/Master/texmf-dist/metapost/featpost/featpost3Dplus2D.mp
+++ b/Master/texmf-dist/metapost/featpost/featpost3Dplus2D.mp
@@ -7,7 +7,7 @@
% P. Jørgensen
% S. Pakin
%
-% Copyright (C) 2013
+% Copyright (C) 2014
% This set of macros adds a lot of features to
% the MetaPost language and eases the production of
@@ -23,7 +23,7 @@
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
- message "Preloading FeatPost macros, version 0.8.7";
+ message "FeatPost-0.8.8";
warningcheck := 0;
background := 0.987white;
@@ -204,7 +204,6 @@
enddef;
% The normalized crossproduct of two vectors.
-% Also check getangle below.
def ncrossprod(expr A, B) =
N( ccrossprod( A, B ) )
@@ -290,6 +289,18 @@
endgroup
enddef;
+% Maybe you would like to calculate the angular arguments of kindofcube...
+
+ def getanglepair( expr InVec ) =
+ begingroup
+ save alphaone, alphatwo;
+ numeric alphaone, alphatwo;
+ alphaone = angle( ( X(InVec), Y(InVec) ) );
+ alphatwo = angle( ( X(InVec) ++ Y(InVec), Z(InVec) ) );
+ ( (alphaone,alphatwo) )
+ endgroup
+ enddef;
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Auxiliary:
@@ -366,6 +377,8 @@
endgroup
enddef;
+% The following two procedures are useful for getready.
+
vardef cstr( expr Cl ) =
"(" &
decimal(X(Cl)) &
@@ -436,7 +449,8 @@
enddef;
% Much improved rigorous pseudo-projection algorithm that follows
-% an idea from Cristian Barbarosie. This makes shadows.
+% an idea from Cristian Barbarosie.
+% This makes shadows caused by a light source point.
def cb(expr R) =
begingroup
@@ -477,6 +491,14 @@
endgroup
enddef;
+% Vanishing point.
+
+ def vp( expr D ) =
+ begingroup
+ ( rp( lineintersectplan( f, D, viewcentr, f-viewcentr) ) )
+ endgroup
+ enddef;
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Basic Functions:
@@ -1426,6 +1448,10 @@
% And again wrong. The last is tdcircarrow.
% Well, what can I say, really the last is ellipsoid.
% Wait! It is torushadow!
+% Bullshit. Only death can stop me. Now it's revolparab.
+% Continuing with torus accessories...
+% And I forgot to mention intersectprolatespheroid!!!
+% The first of Red October, 2014, added vp.
def spheroidshadow( expr CentrPoi, NorthPoleVec, Ray ) =
begingroup
@@ -1528,7 +1554,8 @@
endgroup
enddef;
-% Another brute-force algorythm. It's advisable to use three orthogonal axes.
+% Another brute-force algorythm.
+% It's advisable to use three orthogonal axes.
def ellipsoid( expr Centr, AxOne, AxTwo, AxThr ) =
begingroup
@@ -1600,6 +1627,104 @@
endgroup
enddef;
+ def revolparab( expr BaseCenter, ParabTip, BaseRay ) =
+ begingroup
+ save bcpt, conetip, fakex, fakey, fakez, tipview, ellicenter, coneview;
+ save tanefe, majorvec, minorvec, cutvec, auxpoi, crux, auxx, baseview;
+ save xzero, yzero, xdelta, fakea, xpos, ypos, xneg, yneg, l, apertur;
+ save auxy, maxy, ellmaxang, ymin, xefe, auxray, auxcos, auxsin, ste, a;
+ save auxpath, tippath;
+ save conda, condb, condc;
+ color bcpt, conetip, fakex, fakey, fakez, tipview, ellicenter, coneview;
+ color tanefe, majorvec, minorvec, cutvec, auxpoi, crux, auxx, baseview;
+ numeric xzero, yzero, xdelta, fakea, xpos, ypos, xneg, yneg, l, apertur;
+ numeric auxy, maxy, ellmaxang, ymin, xefe, auxray, auxcos, auxsin, ste;
+ numeric a;
+ path auxpath, tippath;
+ boolean conda, condb, condc;
+ bcpt = BaseCenter-ParabTip;
+ conetip = BaseCenter-2*bcpt;
+ maxy = conorm(bcpt);
+ apertur = angle(2*maxy,BaseRay);
+ fakey = N(bcpt);
+ coneview = f-conetip;
+ tipview = f-ParabTip;
+ baseview = f-BaseCenter;
+ a = getangle(coneview,bcpt);
+ conda = a<=apertur;
+ condb = a>=180-apertur;
+ fakez = ncrossprod( tipview, bcpt );
+ fakex = ccrossprod( fakey, fakez );
+ xzero = cdotprod( fakex, tipview );
+ yzero = cdotprod( fakey, tipview );
+ fakea = maxy/(BaseRay**2);
+ condc = yzero>=fakea*(xzero**2);
+ if (conda and condc) or condb:
+ auxpath = rigorouscircle( BaseCenter, bcpt, BaseRay );
+ unfill auxpath;
+ draw auxpath;
+ else:
+ xdelta = sqrt(xzero**2 - yzero/fakea);
+ xpos = xzero + xdelta;
+ xneg = xzero - xdelta;
+ ypos = fakea*(xpos**2);
+ yneg = fakea*(xneg**2);
+ auxy = 0.5[ypos,yneg];
+ ellicenter = ParabTip+fakex*xzero+fakey*auxy;
+ if yneg<ypos:
+ ymin=yneg;
+ xefe=xneg;
+ else:
+ ymin=ypos;
+ xefe=xpos;
+ fi;
+ tanefe = ParabTip +fakex*xefe+fakey*ymin;
+ minorvec = xdelta*fakez;
+ majorvec = tanefe-ellicenter;
+ if (yneg<maxy) and (ypos<maxy):
+ draw ellipticpath( ellicenter, majorvec, minorvec );
+ else:
+ auxpoi = lineintersectplan(conetip,conetip-f,BaseCenter,bcpt);
+ auxray = conorm( BaseCenter-auxpoi );
+ auxcos = BaseRay/auxray;
+ auxsin = 1 +-+ auxcos;
+ if cdotprod(fakex,auxpoi-BaseCenter)>0:
+ auxx = fakex;
+ else:
+ auxx = -fakex;
+ fi;
+ crux = BaseCenter+BaseRay*(auxx*auxcos +fakez*auxsin);
+ cutvec = crux-ellicenter;
+ auxcos := cdotprod(cutvec,N(majorvec))/conorm(majorvec);
+ auxsin := cdotprod(cutvec,N(minorvec))/conorm(minorvec);
+ ellmaxang = angle(auxcos,auxsin);
+ ste = ellmaxang/18; %%%%%%%%%%%%%%%%%%%%%%%%%%%% DANGER %%%%%%%%%%%%
+ tippath =
+ rp(ellicenter+planarrotation(majorvec,minorvec,-ellmaxang))
+ for l=ste-ellmaxang step ste until ellmaxang:
+ ..rp(ellicenter+planarrotation(majorvec,minorvec,l))
+ endfor --rp(ellicenter+planarrotation(majorvec,minorvec,ellmaxang));
+ if cdotprod( baseview, bcpt )<0:
+ auxpath = rigorouscone(true,BaseCenter,bcpt,BaseRay,conetip);
+ numeric len;
+ len = length auxpath;
+ auxpath := subpath (1,len-1) of auxpath;
+ auxpath := tippath--(reverse auxpath)--cycle;
+ unfill auxpath;
+ draw auxpath;
+ else:
+ tippath := tippath--cycle;
+ unfill tippath;
+ draw tippath;
+ auxpath = rigorouscircle( BaseCenter, bcpt, BaseRay );
+ unfill auxpath;
+ draw auxpath;
+ fi;
+ fi;
+ fi
+ endgroup
+ enddef;
+
% You can't see through this hole. f must not be on the hole axis.
% Not yet documented because "buildcycle" doesn't work properly.
@@ -1748,18 +1873,6 @@
endgroup
enddef;
-% Maybe you would like to calculate the angular arguments of kindofcube...
-
- def getanglepair( expr InVec ) =
- begingroup
- save alphaone, alphatwo;
- numeric alphaone, alphatwo;
- alphaone = angle( ( X(InVec), Y(InVec) ) );
- alphatwo = angle( ( X(InVec) ++ Y(InVec), Z(InVec) ) );
- ( (alphaone,alphatwo) )
- endgroup
- enddef;
-
% It's a bit late now but the stage must be set.
def setthestage( expr NumberOfSideSquares, SideSize ) =
@@ -1855,6 +1968,9 @@
endgroup
enddef;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Toroidal Stuff
+
% Take a donut.
def smoothtorus( expr Tcenter, Tmoment, Bray, Sray ) =
@@ -2077,6 +2193,54 @@
endgroup
enddef;
+ def pointinsidetorus( expr Point, Tcenter, Tmoment, Bray, Sray ) =
+ begingroup
+ save outputboolean, height, dist, dray;
+ boolean outputboolean;
+ numeric height, dist, dray;
+ height = cdotprod(N(Tmoment),Point-Tcenter);
+ if abs(height)>=Sray:
+ outputboolean = false;
+ else:
+ dist = conorm(Point-Tcenter-height*N(Tmoment));
+ dray = Sray +-+ abs(height);
+ if (dist<Bray+dray) and (dist>Bray-dray):
+ outputboolean = true;
+ else:
+ outputboolean = false;
+ fi;
+ fi;
+ ( outputboolean )
+ endgroup
+ enddef;
+
+ def pointrelativetotorus( expr Point, Tcenter, Tmoment, Bray, Sray ) =
+ begingroup
+ save height, dist;
+ numeric height;
+ color dist;
+ height = cdotprod(N(Tmoment),Point-Tcenter);
+ dist = N(Point-Tcenter-height*N(Tmoment));
+ ( conorm(Point-Bray*dist)-Sray )
+ endgroup
+ enddef;
+
+ def intersectorus( expr Tcenter, Tmoment, Bray, Sray, LinePoi, LineDir ) =
+ begingroup
+ save trypoi, factry, linedi;
+ color trypoi, linedi;
+ numeric factry, j, auxd;
+ trypoi = LinePoi;
+ factry = 0.25;
+ linedi = N(LineDir);
+ for j= 1 upto 50:
+ auxd := pointrelativetotorus( trypoi, Tcenter, Tmoment, Bray, Sray );
+ trypoi := trypoi+factry*linedi*auxd;
+ endfor;
+ ( trypoi )
+ endgroup
+ enddef;
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Non-standard objects:
@@ -2257,7 +2421,7 @@
enddef;
% Another point is that I want to draw trajectories in space and
-% dependant on velocity: VecFunc( position, velocity ).
+% dependent on velocity: VecFunc( position, velocity ).
% This time is fourth-order Runge-Kutta.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CHANGES PrintStep!!!!
@@ -3537,7 +3701,7 @@
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Part IV (automatic perspective tuning, polyhedric vertex approximation):
+% Part IV (automatic perspective tuning and minimization):
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def randomfear =
@@ -3690,6 +3854,67 @@
endgroup
enddef;
+% Minimization routine for scalar functions like y=f(x) where an initial
+% triplet (x1,x2,x3) with x1<x2<x3 is given as a parabolic squeleton that
+% provides a way to search for the smallest value of y (if iterated)
+
+ def minimizestep( expr Abcisscolor )( text PlainFunc ) =
+ begingroup
+ save xa, xb, xc, xd, ya, yb, yc, yd, aux, coeb, coec, den;
+ save colout;
+ numeric xa, xb, xc, xd, ya, yb, yc, yd, aux, coeb, coec, den;
+ color colout;
+ xa = X( Abcisscolor );
+ xb = Y( Abcisscolor );
+ xc = Z( Abcisscolor );
+ ya = PlainFunc(xa);
+ yb = PlainFunc(xb);
+ yc = PlainFunc(xc);
+ if ya = yb:
+ colout = (-0.125[xa,xb],xb,xc);
+ elseif yb = yc:
+ colout = (xa,xb,1.125[xb,xc]);
+ else:
+ if (yb>ya) or (yb>yc):
+ show Abcisscolor;
+ message " Unable to minimizestep!";
+ fi;
+ den = (xb-xc)*((xa**2)-(xb**2))-(xa-xb)*((xb**2)-(xc**2));
+ if abs(den) < 0.0005:
+ show den;
+ message " Unable to minimizestep!";
+ fi;
+ coeb = ((yb-yc)*((xa**2)-(xb**2))-(ya-yb)*((xb**2)-(xc**2)))/den;
+ coec = ((xb-xc)*(ya-yb)-(xa-xb)*(yb-yc))/den;
+ xd = -0.5*coeb/coec;
+ yd = PlainFunc( xd );
+ if ((xa<xd) and (xd<xb)):
+ if (yd<yb):
+ colout = (xa,xd,xb);
+ else:
+ colout = (xd,xb,xc);
+ fi;
+ elseif ((xb<xd) and (xd<xc)):
+ if (yd<yb):
+ colout = (xb,xd,xc);
+ else:
+ colout = (xa,xb,xd);
+ fi;
+ else:
+ aux := 0.125[xb,xc]-0.125[xb,xa];
+ colout = (xa,0.125[xb,xa]+uniformdeviate(aux),xc);
+ fi;
+ fi;
+ ( colout )
+ endgroup
+ enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Part V:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Intersections:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Check lineintersectplan above %%%%%%%%%%%%%%%
+
def calculatecostver(expr VerA,DisA,VerB,DisB,VerC,DisC,TryV) =
begingroup
save a, b, c;
@@ -3700,7 +3925,8 @@
( ( a ++ b ++ c )**2 )
endgroup
enddef;
-
+
+% Approximation of the intersection of three spheres.
% Be aware of the next three danger parameters.
def improvertex( expr VerA, DisA, VerB, DisB, VerC, DisC, IniV ) =
@@ -3861,64 +4087,10 @@
endgroup
enddef;
-% Minimization routine for scalar functions like y=f(x) where an initial
-% triplet (x1,x2,x3) with x1<x2<x3 is given as a parabolic squeleton that
-% provides a way to search for the smallest value of y (if iterated)
-
- def minimizestep( expr Abcisscolor )( text PlainFunc ) =
- begingroup
- save xa, xb, xc, xd, ya, yb, yc, yd, aux, coeb, coec, den;
- save colout;
- numeric xa, xb, xc, xd, ya, yb, yc, yd, aux, coeb, coec, den;
- color colout;
- xa = X( Abcisscolor );
- xb = Y( Abcisscolor );
- xc = Z( Abcisscolor );
- ya = PlainFunc(xa);
- yb = PlainFunc(xb);
- yc = PlainFunc(xc);
- if ya = yb:
- colout = (-0.125[xa,xb],xb,xc);
- elseif yb = yc:
- colout = (xa,xb,1.125[xb,xc]);
- else:
- if (yb>ya) or (yb>yc):
- show Abcisscolor;
- message " Unable to minimizestep!";
- fi;
- den = (xb-xc)*((xa**2)-(xb**2))-(xa-xb)*((xb**2)-(xc**2));
- if abs(den) < 0.0005:
- show den;
- message " Unable to minimizestep!";
- fi;
- coeb = ((yb-yc)*((xa**2)-(xb**2))-(ya-yb)*((xb**2)-(xc**2)))/den;
- coec = ((xb-xc)*(ya-yb)-(xa-xb)*(yb-yc))/den;
- xd = -0.5*coeb/coec;
- yd = PlainFunc( xd );
- if ((xa<xd) and (xd<xb)):
- if (yd<yb):
- colout = (xa,xd,xb);
- else:
- colout = (xd,xb,xc);
- fi;
- elseif ((xb<xd) and (xd<xc)):
- if (yd<yb):
- colout = (xb,xd,xc);
- else:
- colout = (xa,xb,xd);
- fi;
- else:
- aux := 0.125[xb,xc]-0.125[xb,xa];
- colout = (xa,0.125[xb,xa]+uniformdeviate(aux),xc);
- fi;
- fi;
- ( colout )
- endgroup
- enddef;
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% Part V (strictly two-dimensional):
+%%%% Part VI (strictly two-dimensional):
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
% Verify if a path is cyclic (written by Scott Pakin)
def is_cyclic expr cpath =
@@ -4246,8 +4418,7 @@
enddef;
% Shrink or swell a cyclic path without cusp points and without
-% coinciding pre and post control points. This algorithm should
-% be improved to add circular arcs on the outside of convex corners.
+% coinciding pre and post control points.
def lasermachine( expr DefinedPath, Beam, CosLimit ) =
begingroup