summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp151
1 files changed, 151 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp b/Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp
new file mode 100644
index 00000000000..2b191018960
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/par3Dplotexamples.mp
@@ -0,0 +1,151 @@
+% J. Schwaiger with help of
+% FEATPOST and the macropackages
+% la3Dmacros.mp and hlr3Dmacros.mp
+% by L. Nobre G.
+% 2003
+
+% Figure (2) retouched in 2004 by L. Nobre G.
+
+input featpost3Dplus2D;
+
+verbatimtex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{euler}
+\usepackage{graphicx}
+\begin{document}
+etex
+
+% for trigonometric functions when angles are measured in rad
+%
+ def sinrad( expr t)=sind(t/3.145*180) enddef;
+ def cosrad( expr t)=cosd(t/3.145*180) enddef;
+
+ def parsurface( expr tc,sc )=
+ (%
+ (4 cosrad(tc) - sinrad(sc)*cosrad(tc),%
+ 4 sinrad(tc) - sinrad(sc)*sinrad(tc),%
+ cosrad(sc))%
+ )% A torus
+ enddef;
+
+ def parsurfacetwo( expr tc,sc )=
+ (%
+ (4+4cosrad(tc) - sinrad(sc)*cosrad(tc),%
+ cosrad(sc),
+ 4sinrad(tc) - sinrad(sc)*sinrad(tc)%
+ )%
+ )% Another torus
+ enddef;
+
+ def parsurfacethree( expr tc,sc )=
+% 0<=sc<=2pi,-2<=tc<=2
+%xmin=-1.4, xmax=1.4
+%ymin=-0.7, ymax=2
+%zmin=-2.5,zmax=2.5
+ (%
+ (1.414213562*cosrad(sc)*cosrad(tc)
+ -2*sinrad(sc)*sinrad(tc))/(2*(abs(tc) + 1)) + sinrad(tc),%
+ cosrad(tc) - (1.414213562*cosrad(sc)*sinrad(tc)
+ + 2*sinrad(sc)*cosrad(tc))/(2*(abs(tc) + 1)),%
+ tc - 2*cosrad(sc)/(2*(abs(tc) + 1))
+ )%
+% A space tube governed by a helix
+ enddef;
+
+def zsurface( expr xc, yc ) =
+ ( xc, yc, cosd(xc*57)*cosd(yc*57)+4*mexp(-(xc**2+yc**2)*6.4) )
+enddef;
+
+f:=(8,1.5,1.5);
+Spread := 127;
+
+
+beginfig(1);
+ numeric Ns, Nt, lows, higs, lowt, higt, lowx, highx, lowy, highy,
+ facz, lowz, higz, base, topo;
+ path chair;
+ % for torus
+ f:=(4,1.5,1.5);
+ Spread:=150;
+ Ns = 16;
+ Nt= 16;
+ lows := 3.145*0.25;
+ higs := 3.145*1.75;
+ lowt = -3.145;
+ higt = 3.145;
+ facz=1;
+ lowz = -5;
+ higz = 5;
+ lowx:=-5;
+ lowy:=-5;
+ higx:=10;
+ higy:=7;
+%
+ NF:=0; %Initialize number of faces;
+%
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurfacetwo );
+ lows := 3.145*0.5;
+ higs := 2.25*3.145; % new parameters and new surface
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurface );
+ base = -1/facz;
+ topo = 1/facz;
+ chair = rp((-1,-1,base))--rp((1,-1,base))--rp((1,1,base))
+ --rp((-1,1,base))--rp((-1,-1,base))--rp((-1,-1,topo))
+ --rp((-1,1,topo))--rp((-1,1,base))--cycle;
+ draw_invisible( false,true,(blue+0.5green),0.6white);
+ draw bbox currentpicture;
+endfig;
+
+beginfig(2);
+ numeric Ns, Nt, lows, higs, lowt, higt, lowx, highx, lowy, highy,
+ facz, lowz, higz, base, topo;
+ path chair;
+
+ f := (6,0.5,3);
+ Spread:=150;
+
+ Ns = 19;
+ Nt= 19;
+ lows := -3.145;
+ higs := 3.145;
+ lowt = -3.145;
+ higt = 3.145;
+ facz = 2;
+ lowz = -2;
+ higz = 2;
+ lowx:=-5;
+ lowy:=-5;
+ higx:=5;
+ higy:=5;
+ NF:=0; %Initialize number of faces;
+%
+ partrimesh( Ns,Nt,lowt,higt,lows,higs,
+ lowx,higx,lowy,higy,lowz,higz,facz,parsurface );
+
+ nx := 27;
+ lowy := -7;
+ higy := 7;
+ lowx := -7;
+ higx := 7;
+ facz := 2;
+ lowz := -1;
+ higz := 5;
+ partrimesh( nx,nx,lowx,higx,lowy,higy,
+ lowx,higx,lowy,higy,lowz,higz,facz,zsurface);
+ base = -1/facz;
+ topo = 1/facz;
+ chair = rp((-1,-1,base))--rp((1,-1,base))--rp((1,1,base))
+ --rp((-1,1,base))--rp((-1,-1,base))--rp((-1,-1,topo))
+ --rp((-1,1,topo))--rp((-1,1,base))--cycle;
+ fill chair withcolor 0.9 blue+0.6white;
+ draw chair withcolor 0.1white ;
+ draw_invisible( false,false,(red+0.32blue),0.6white);
+endfig;
+
+verbatimtex \end{document} etex
+
+end;