gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/doc/buoy buoyGeometry.mp


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz/doc/buoy buoyGeometry.mp
Date: Fri, 14 Feb 2003 09:16:34 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/02/14 09:16:34

Modified files:
        doc/buoy       : buoyGeometry.mp 

Log message:
        Buoy diagram

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/doc/buoy/buoyGeometry.mp.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gzz/doc/buoy/buoyGeometry.mp
diff -u gzz/doc/buoy/buoyGeometry.mp:1.1 gzz/doc/buoy/buoyGeometry.mp:1.2
--- gzz/doc/buoy/buoyGeometry.mp:1.1    Wed Feb 12 03:53:48 2003
+++ gzz/doc/buoy/buoyGeometry.mp        Fri Feb 14 09:16:33 2003
@@ -5,9 +5,10 @@
 path screen;
 screen = (0,0)--(400,300);
 
+path frame;
+
 % frame
-draw ulcorner screen -- urcorner screen -- lrcorner screen -- llcorner screen 
-- cycle
-       withpen pencircle scaled 5pt;
+frame = ulcorner screen -- urcorner screen -- lrcorner screen -- llcorner 
screen -- cycle;
 % draw screen;
 
 pair ctr;
@@ -30,35 +31,67 @@
 pair projpt;
 projpt = ctr - (xrad, 0);
 
-x = 10;
+x = 4;
 z0 = (-x, -x);
 z1 = (x, -x);
 z2 = (-1, -1);
 
+vardef jitterpt(expr p, s) =
+    p + s * (normaldeviate, normaldeviate)
+enddef;
+
+vardef jitterpath(expr p, npt, pta) =
+    save s;
+    save i;
+       for i = 0 step length(p)/npt until (length(p) * (npt-1.0)/npt):
+           jitterpt(point i of p, pta) ...
+       endfor
+    cycle
+enddef;
+
 vardef buoy(expr p) = 
-    save int,shift,b,bscale, projline;
+    save int,shift,b,bscale, projline, inter;
     pair int, shift;
     shift = p + sh;
     pair b;
     path projline;
+    pair inter;
 
     projline = .1[projpt,p] -- (2.5*xrad/abs(projpt-p))[projpt, p];
 
     draw projline;
 
-    b = shift;
-    bscale = 20;
-    draw p-z0 -- p+z0;
-    draw p-z1 -- p+z1;
-    draw p -- b;
-    draw bbox(b-z2*bscale -- b+z2*bscale);
+    projline := p -- (2.5*xrad/abs(projpt-p))[projpt, p];
+
+    inter = projline intersectiontimes circle;
+
+    if xpart(inter) < 0:
+       b = shift;
+       bscale = 10;
+    else:
+       b = point xpart(inter) of projline;
+       bscale = 10 + .5*(xrad - abs(ctr - p));
+    fi
+    draw p-z0 -- p+z0 withpen pencircle scaled 4pt;
+    draw p-z1 -- p+z1 withpen pencircle scaled 4pt;
+    draw p -- b withpen pencircle scaled 3pt;
+    draw b -- b withpen pencircle scaled 10pt;
+    draw jitterpath(bbox(b-z2*bscale -- b+z2*bscale), 7, .05*bscale) withpen 
pencircle scaled 4pt;
 enddef;
 
 buoy((20,20));
 buoy((100,120));
+buoy((210,140));
+buoy((70,180));
+buoy((260,240));
+buoy((30,240));
+buoy((350,240));
 
 dotlabel.urt("C", ctr);
 dotlabel.urt("P", projpt);
+
+clip currentpicture to frame;
+draw frame withpen pencircle scaled 5pt;
 
 endfig;
 end




reply via email to

[Prev in Thread] Current Thread [Next in Thread]