summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp139
1 files changed, 139 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp b/Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp
new file mode 100644
index 00000000000..27d39c5dea4
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/ubhtransients.mp
@@ -0,0 +1,139 @@
+% ubhtransients.mp
+% L. Nobre G.
+% 2003
+
+numeric SingleContinuosParameter;
+SingleContinuosParameter = 0.95;
+
+numeric vertn, horin, grids, thex, they, varx, xcomp;
+numeric ymax, xmax, i, j, size, u, ycomp, theta, phi;
+numeric power, xlim, ylim, frax, fray, allang, shift;
+numeric perang, ampper, velang, displamp, hdk;
+numeric velfunc, auxfunc, homang, vpower;
+pair actpos, direct, one, two, displvec;
+path cirma;
+color thedark;
+path VGAborder;
+
+u := 0.5mm;
+size := 1.14u;
+grids := 4u;
+hdk := 0.47;
+
+% This is for the sudden rotation
+%allang := SingleContinuosParameter[0,80];
+%homang := 0;
+
+% This is for the UH evolution
+% allang := 80;
+% homang := SingleContinuosParameter[0,80];
+% ampper := 0;
+% displamp := 0;
+% frax := 1.2;
+% fray := 1.6;
+% velang := 0;
+% power := 1;
+% vpower := 1;
+
+% The next homang parameter when in UBH evolution
+% has two parts:
+% Part1 - SingleContinuosParameter from 0 to 1 [0,45]
+% Part2 - SingleContinuosParameter from 1 to 0 [85,45]
+% homang := SingleContinuosParameter[0,45];
+% allang := 85;
+% ampper := SingleContinuosParameter[0,33];
+% velang := 15;
+% displamp := SingleContinuosParameter[0,5u];
+% frax := 1.2;
+% fray := 2.0;
+% power := 1;
+% vpower := 1;
+
+% This is for the UB evolution
+ allang := 90;
+ homang := 0;
+ ampper := SingleContinuosParameter[0,84];
+ displamp := SingleContinuosParameter[0,9u];
+ frax := 0.8;
+ fray := 1.5;
+ velang := 0;
+ power := 1;
+ vpower := 1;
+
+%power := SingleContinuosParameter[1,0.47];
+%vpower := 1.0/power;
+
+xlim := 115.00;
+ylim := 86.025;
+vertn := 2.0*ylim/grids;
+horin := 2.0*xlim/grids;
+ymax := floor(0.5*(vertn*fray-1));
+xmax := floor(0.5*(horin*frax-1));
+%varx := 450/(0.5*(vertn-1));% in UH and UBH
+varx := 350/(0.5*(vertn-1));% in UB
+
+ VGAborder := (-xlim,-ylim)-- %
+ ( xlim,-ylim)-- %
+ ( xlim, ylim)-- %
+ (-xlim, ylim)--cycle; %
+
+ def mypower( expr base, expo ) =
+ begingroup
+ save aux;
+ numeric aux;
+ if base=0:
+ aux = 1;
+ else:
+ aux = abs(base)/base;
+ fi;
+ ( aux*(abs(base)**expo) )
+ endgroup
+ enddef;
+
+ def produce_vga_border =
+ begingroup
+ draw VGAborder withcolor background withpen pencircle scaled 0;
+ clip currentpicture to VGAborder
+ endgroup
+ enddef;
+
+ beginfig(0);
+ pickup pencircle scaled u;
+ cirma := fullcircle scaled (1.43*grids);
+ for i=-xmax upto xmax:
+ for j=-ymax upto ymax:
+ actpos:=(grids*(i,j)) rotated (-allang);
+ thex:=i*varx;
+ they:=j*varx;
+ auxfunc:=dir(velang) dotprod (thex,they);
+ perang :=ampper*mypower(sind(auxfunc),power);
+ theta:=180-allang+perang+homang;
+ direct:=dir(theta);
+ velfunc:=-displamp*mypower(cosd(auxfunc),vpower);
+ displvec:=dir(velang)*velfunc;
+ actpos := actpos+displvec;
+ thedark := (1-hdk*(ypart direct))*white;
+ fill cirma shifted actpos withcolor thedark;
+ endfor;
+ endfor;
+ for i=-xmax upto xmax:
+ for j=-ymax upto ymax:
+ actpos:=(grids*(i,j)) rotated (-allang);
+ thex:=i*varx;
+ they:=j*varx;
+ auxfunc:=dir(velang) dotprod (thex,they);
+ perang :=ampper*mypower(sind(auxfunc),power);
+ theta:=180-allang+perang+homang;
+ direct:=dir(theta);
+ velfunc:=-displamp*mypower(cosd(auxfunc),vpower);
+ displvec:=dir(velang)*velfunc;
+ actpos := actpos+displvec;
+ one:=actpos-size*direct;
+ two:=actpos+size*direct;
+ draw one--two;
+ endfor;
+ endfor;
+ produce_vga_border;
+endfig;
+
+end;