[Top][All Lists]
[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