summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp88
1 files changed, 88 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp b/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp
new file mode 100644
index 00000000000..30fe6235713
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/featpost/example/standard/trajectoryline.mp
@@ -0,0 +1,88 @@
+% trajectoryline.mp
+% L. Nobre G.
+% 2003
+
+%input featpost3Dplus2D;
+
+Spread := 30;
+f := (10,0,0);
+
+color posa, posb, axer;
+numeric kfac, refrad;
+posa = -5*green;
+posb = 5*green;
+axer = blue;
+kfac = 2.5;
+refrad = 1;
+
+def vecfunc( expr posit )=
+ begingroup
+ save modula, modulb, field;
+ color field;
+ numeric modula, modulb;
+ modula = conorm( posit-posa );
+ modulb = conorm( posit-posb );
+ field = ( posit-posa )/(modula**3)+kfac*( posit-posb )/(modulb**3);
+ ( -field )
+ endgroup
+enddef;
+
+def magfunc( expr posit )=
+ begingroup
+ save perpd, refvec, dist;
+ color perpd, refvec;
+ numeric dist;
+ perpd = ccrossprod( axer, posit );
+ refvec = posit - refrad*ncrossprod( perpd, axer );
+ dist = conorm( refvec );
+ ( ncrossprod( refvec, perpd )/(dist**2) )
+ endgroup
+enddef;
+
+beginfig(1);
+ numeric i, lena, numa, sa, diffstep, ray;
+ color stp, svl;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 400;
+ numa = 58;
+ diffstep = 0.12;
+ ray = 3.5;
+ sa = 168;
+ for i=sa step numa until (180):
+ stp := ( 0, ray*cosd(i), ray*sind(i) );
+ svl := N( -stp );
+ oneline := trajectorypath( lena, stp, svl, diffstep, vecfunc );
+ draw oneline withpen grossa;
+ draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(posa) withpen grossa;
+ draw rp(posb) withpen grossa;
+endfig;
+
+beginfig(2);
+ numeric i, lena, numa, sa, diffstep, ray;
+ color stp, svl;
+ path oneline;
+ pen grossa, fina;
+ grossa = pencircle scaled 3pt;
+ fina = pencircle scaled 2pt;
+ lena = 100;
+ numa = 4;
+ diffstep = 1;
+ ray = 5.5;
+ sa = 97;
+ for i=sa step numa until (120):
+ stp := ( 0, ray*cosd(i), ray*sind(i) );
+ svl := 0.8*N( -stp );
+ oneline := magnetictrajectorypath( lena, stp, svl, diffstep, magfunc );
+ draw oneline withpen grossa;
+ draw oneline withpen fina withcolor background;
+ endfor;
+ draw rp(black) withpen grossa;
+endfig;
+
+end.
+