home *** CD-ROM | disk | FTP | other *** search
- %% gjkt.mf
- %% posledni uprava 11.1.1998
-
- def penc = pickup pencircle scaled enddef; %% pera
-
- def pens = pickup pensquare scaled enddef;
-
- def overdraw(expr p)=erase fill p; draw p; enddef; %% p⌐ekreslení
-
- def frame=draw unitsquare xscaled w yscaled h; enddef; %% rámeçek
-
- def axis(expr bod,delka)= %% osy
- draw (0,ypart bod)--(w,ypart bod);
- draw (xpart bod,0)--(xpart bod,h);
- arrow(delka,90,(xpart bod,h));
- arrow(delka,0,(w,ypart bod));
- enddef;
-
- def halfaxis(expr bod,delka)= %% pûlosy
- draw bod--(w,ypart bod); draw bod--(xpart bod,h);
- arrow(delka,90,(xpart bod,h));
- arrow(delka,0,(w,ypart bod));
- enddef;
-
- def scale(expr bod,delka,dw,dh)= %% mê⌐ítka
- for i=1 upto ((w-3mm-xpart bod)/dw):
- draw ((0,delka/2)--(0,-delka/2)) shifted (bod+i*(dw,0));
- endfor;
- for i=1 upto ((xpart bod)/dw):
- draw ((0,delka/2)--(0,-delka/2)) shifted (bod-i*(dw,0));
- endfor;
- for i=1 upto ((h-3mm-ypart bod)/dh):
- draw ((delka/2,0)--(-delka/2,0)) shifted (bod+i*(0,dh));
- endfor;
- for i=1 upto ((ypart bod)/dh):
- draw ((delka/2,0)--(-delka/2,0)) shifted (bod-i*(0,dh));
- endfor;
- enddef;
-
- def net(expr dilek)= %% síƒ
- for i=0 upto w/dilek+.1:
- draw (i*dilek,0)--(i*dilek,h);
- endfor;
- for i=0 s upto h/dilek+.1:
- draw (0,i*dilek)--(w,i*dilek);
- endfor;
- enddef;
-
- def arrow(expr delka,smer,bod)= %% ¿ipka
- begingroup
- save x,y;
- z1=(0,0); x2=x3=-delka; -y2=y3=2/7delka;
- draw (z2--z1--z3) rotated smer shifted bod;
- endgroup
- enddef;
-
- def farrow(expr delka,smer,bod)= %% plná ¿ipka
- begingroup
- save x,y;
- z1=origin; x2=x3=x1-delka; y1-y2=y3-y1=2/7delka;
- filldraw ((z3--z2--z1--cycle) rotated smer shifted bod);
- endgroup
- enddef;
-
- def earrow(expr delka,smer,bod)= %% prazdná ¿ipka
- begingroup
- save x,y;
- z1=origin; x2=x3=x1-delka; y1-y2=y3-y1=2/7delka;
- overdraw((z3--z2--z1--cycle) rotated smer shifted bod);
- endgroup
- enddef;
-
- def vector(expr bod,velikost,delka,smer)= %% vektor
- begingroup
- save x,y;
- z1=bod; z2=(velikost,0) rotated smer shifted bod;
- draw z1--z2;
- arrow(delka,smer,z2);
- endgroup
- enddef;
-
- def vect(expr boda,bodb,delka)= %% vektor urçenÿ poçátkem a koncem
- begingroup
- save x,y;
- z1=boda; z2=bodb; smer:=angle(z2-z1);
- draw z1--z2;
- arrow(delka,smer,z2);
- endgroup
- enddef;
-
- def dim(expr boda,bodb,delka)= %% kóta
- begingroup
- save x,y;
- z1=boda; z2=bodb; smer:=angle(z2-z1);
- draw z1--z2;
- arrow(delka,smer,z2); arrow(delka,smer+180,z1);
- endgroup
- enddef;
-
- def R(expr bod,uhel)= %% znaçka pro pravÿ úhel
- draw quartercircle scaled 6mm rotated uhel shifted bod;
- drawdot 1.7mm*dir45 rotated uhel shifted bod
- withpen currentpen scaled 3;
- enddef;
-
- def circ(expr boda,bodb,bodc)= %% kruænice urçená t⌐emi body
- begingroup
- save x,y,r;
- z1=boda; z2=bodb; z3=bodc; z12=1/2[z1,z2]; z23=1/2[z2,z3];
- z0-z12=whatever*((z1-z2) rotated 90);
- z0-z23=whatever*((z3-z2) rotated 90);
- r=length(z1-z0);
- draw fullcircle scaled 2r shifted z0;
- endgroup
- enddef;
-
- def dashline(expr boda,bodb,n)= %% çárkovaná úseçka
- for t=0 upto n:
- draw (3t/(3n+2))[boda,bodb]--((3t+2)/(3n+2))[boda,bodb];
- endfor;
- enddef;
-
- def dotline(expr boda,bodb,n)= %% teçkovaná úseçka
- for t=0 upto n: drawdot (t/n)[boda,bodb]; endfor;
- enddef;
-
- def dashdotline(expr boda,bodb,n)= %% çerchovaná úseçka
- for t=0 upto n:
- draw (5t/(5n+3))[boda,bodb]--((5t+3)/(5n+3))[boda,bodb];
- endfor;
- for t=0 upto (n-1):
- drawdot ((5t+4)/(5n+3))[boda,bodb];
- endfor;
- enddef;
-
- def odot(expr bod,r)= %% krouæek
- overdraw(fullcircle scaled 2r shifted bod);
- enddef;
-
- def dashcircle(expr stred,r,uhel,n)= %% çárkovaná kruænice
- %% parametr úhel urçuje polohu zaçátku první çárky
- for t=0 upto (n-1):
- arc(stred,r,t*360/n+uhel,(t+2/3)*360/n+uhel);
- endfor;
- enddef;
-
- def dashdotcircle(expr stred,r,uhel,n)= %% çerchovaná kruænice
- for t=0 upto (n-1):
- arc(stred,r,t*360/n+uhel,(t+3/5)*360/n+uhel);
- arc(stred,r,(t+4/5)*360/n+uhel,(t+4/5)*360/n+uhel);
- endfor;
- enddef;
-
- def dotcircle(expr stred,r,uhel,n)= %% teçkovaná kruænice
- for t=0 upto (n-1):
- arc(stred,r,t*360/n+uhel,t*360/n+uhel);
- endfor;
- enddef;
-
- def arc(expr stred,r,uhela,uhelb)= %% oblouk
- begingroup
- save x,y;
- z1=stred+dir(uhela)*r;
- z2=stred+dir(uhelb)*r;
- z3=stred+dir((uhelb+uhela)/2)*r;
- draw z1{dir(uhela+90)}..z3..{dir(uhelb+90)}z2;
- endgroup
- enddef;
-
- def dasharc(expr stred,r,uhela,uhelb,n)= %% çárkovanÿ oblouk
- for t=0 upto n:
- arc(stred,r,t*(uhelb-uhela)/(n+2/3)+uhela,
- (t+2/3)*(uhelb-uhela)/(n+2/3)+uhela);
- endfor;
- enddef;
-
- def dashdotarc(expr stred,r,uhela,uhelb,n)= %% çerchovanÿ oblouk
- for t=0 upto n:
- arc(stred,r,5*t*(uhelb-uhela)/(5*n+3)+uhela,
- (5*t+3)*(uhelb-uhela)/(5*n+3)+uhela);
- endfor;
- for t=0 upto (n-1):
- arc(stred,r,(5*t+4)*(uhelb-uhela)/(5*n+3)+uhela,
- (5*t+4)*(uhelb-uhela)/(5*n+3)+uhela);
- endfor;
- enddef;
-
- def dotarc(expr stred,r,uhela,uhelb,n)= %% teçkovanÿ oblouk
- for t=0 upto n:
- arc(stred,r,t*(uhelb-uhela)/n+uhela,t*(uhelb-uhela)/n+uhela);
- endfor;
- enddef;
-
- def dashpath(expr p,pocet_carek,pomer)= %% çárkovaná k⌐ivka
- begingroup %% pomer=délka_çarky/délka_mezery
- save t,tz,krok,s,d_carky,d_mez;
- krok:=0.001; t:=0; s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif t>length(p);
- endfor;
- d_carky:=s*pomer/(pocet_carek*pomer+pocet_carek-1);
- d_mez:=s/(pocet_carek*pomer+pocet_carek-1);
- t:=0;
- forever:
- tz:=t; s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_carky) or (t>length(p));
- endfor;
- draw subpath(tz,t) of p;
- s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_mez) or (t>length(p));
- endfor;
- exitif t>length(p);
- endfor;
- endgroup
- enddef;
-
-
- def dashdotpath(expr p,pocet_carek,pomer)= %% çerchovaná k⌐ivka
- begingroup %% pomer=délka_çarky/délka_mezery
- save t,tz,krok,s,d_carky,d_mez;
- krok:=0.001; t:=0; s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif t>length(p);
- endfor;
- d_carky:=s*pomer/(pocet_carek*pomer+2pocet_carek-2);
- d_mez:=s/(pocet_carek*pomer+2pocet_carek-2);
- t:=0;
- forever:
- tz:=t; s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_carky) or (t>length(p));
- endfor;
- draw subpath(tz,t) of p;
- s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_mez) or (t>length(p));
- endfor;
- drawdot point t of p;
- s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_mez) or (t>length(p));
- endfor;
- exitif t>length(p);
- endfor;
- endgroup
- enddef;
-
- def dashcyclepath(expr p,pocet_carek,pomer)=
- begingroup
- save t,tz,krok,s,d_carky,d_mez,poc;
- krok:=0.001; t:=0; s:=0; %% çárkovaná uzav⌐ená k⌐ivka
- forever: %% pomer=délka_çarky/délka_mezery
- t:=t+krok; %% první a poslední çárka je dvakrát krat¿í
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif t>length(p);
- endfor;
- d_carky:=s*pomer/(pocet_carek*pomer+pocet_carek);
- d_mez:=s/(pocet_carek*pomer+pocet_carek);
- t:=0; poc:=0;
- forever:
- tz:=t; s:=0; poc:=poc+1;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- if ((poc=1) or (poc=pocet_carek+1)):
- exitif (s>=d_carky/2) or (t>length(p));
- fi;
- exitif s>=d_carky;
- endfor;
- draw subpath(tz,t) of p;
- exitif t>length(p);
- s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_mez) or (t>length(p));
- endfor;
- exitif t>length(p);
- endfor;
- endgroup
- enddef;
-
- def dotpath(expr p,pocet_tecek)= %% teçkovaná k⌐ivka
- begingroup
- save t,krok,s,d_mez;
- krok:=0.001; t:=0; s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif t>length(p);
- endfor;
- d_mez:=s/(pocet_tecek-1);
- t:=0;
- drawdot(point t of p);
- forever:
- s:=0;
- forever:
- t:=t+krok;
- s:=s+length((point t of p)-(point (t-krok) of p));
- exitif (s>=d_mez) or (t>length(p));
- endfor;
- drawdot(point t of p);
- exitif t>length(p);
- endfor;
- endgroup
- enddef;
-
-