summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp102
1 files changed, 71 insertions, 31 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp b/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
index 4cb3f4f6bfd..b62491b74a6 100644
--- a/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
+++ b/Master/texmf-dist/doc/metapost/featpost/example/lgc2refractionEdited.mp
@@ -1,9 +1,34 @@
% lgc2refractionEdited.mp
% lgc means LaTeX Graphics Companion
-% 2013
+% 2014
prologues := 1;
+vardef refractray(expr s,a,p,rir)=
+ save tI,tn,ia,ib,I,J,sib;
+ pair I,J;
+ tI = xpart(p intersectiontimes (s--(s+30cm*dir(a))));
+ if tI>=0:
+ I=point tI of p;
+ draw s--I;
+ tn=angle(direction tI of p)+90;
+ ia=tn-angle(s-I);
+ sib=sind(ia)/rir;
+ ib=-angle(1+-+sib,sib);
+ J=I+dir(tn+180+ib)*2cm;
+ draw I--J withcolor blue;
+ fi;
+enddef;
+
+beginfig(1);
+ numeric u;
+ u=3mm;
+ path p;
+ p=((5u,-6u)..(4u,-2u)..(4.5u,0)..(5u,5u)) rotated 90;
+ for a=40 step 5 until 140: refractray(origin,a,p,1.5); endfor;
+ draw p withcolor red;
+endfig;
+
vardef lensrefractray(expr s,a,p,q,rir)=
save tI,tn,ia,ib,I,J,K,sib;
pair I,J,K;
@@ -30,57 +55,72 @@ vardef lensrefractray(expr s,a,p,q,rir)=
fi;
enddef;
-vardef refractray(expr s,a,p,rir)=
- save tI,tn,ia,ib,I,J,sib;
+beginfig(2);
+ path q;
+ q = reverse (p yscaled (-1)) shifted (up*10.5u);
+ fill (p--q--cycle) withcolor red;
+ for a=46 step 3 until 120:
+ lensrefractray(origin,a,p,q,1.4);
+ endfor;
+endfig;
+
+vardef reflectray(expr s,a,p,l)=
+ save tI,tn,ia,I,J;
pair I,J;
- tI = xpart(p intersectiontimes (s--(s+30cm*dir(a))));
+ tI=xpart(p intersectiontimes (s--(s+30cm*dir(a))));
if tI>=0:
I=point tI of p;
draw s--I;
tn=angle(direction tI of p)+90;
ia=tn-angle(s-I);
- sib=sind(ia)/rir;
- ib=-angle(1+-+sib,sib);
- J=I+dir(tn+180+ib)*2cm;
+ J=I+dir(tn+ia)*l;
draw I--J withcolor blue;
fi;
enddef;
-vardef reflectray(expr s,a,p)=
- save tI,tn,ia,I,J;
- pair I,J;
+beginfig(3);
+ for a=40 step 5 until 140: reflectray(origin,a,p,2cm); endfor;
+ draw p withcolor red;
+endfig;
+
+vardef doublereflection(expr s,a,p,q,l,m)=
+ save tI,tn,ia,I,J,K;
+ pair I,J,K;
tI=xpart(p intersectiontimes (s--(s+30cm*dir(a))));
if tI>=0:
I=point tI of p;
draw s--I;
tn=angle(direction tI of p)+90;
ia=tn-angle(s-I);
- J=I+dir(tn+ia)*2cm;
- draw I--J withcolor blue;
+ J=I+dir(tn+ia)*l;
+ tI := xpart(q intersectiontimes (I--J));
+ if tI>=0:
+ K:=point tI of q;
+ draw I--K withcolor blue;
+ tn:=angle(direction tI of q)+90;
+ ia:=tn-angle(I-K);
+ J:=K+dir(tn+ia)*m;
+ draw K--J;
+ fi;
fi;
enddef;
-beginfig(2);
- numeric u;
+beginfig(4);
+ numeric u, ad, len;
u=3mm;
- path p;
- p=((5u,-6u)..(4u,-2u)..(4.5u,0)..(5u,5u)) rotated 90;
- for a=40 step 5 until 140: reflectray(origin,a,p); endfor;
- draw p withcolor red;
-endfig;
-
-beginfig(1);
- for a=40 step 5 until 140: refractray(origin,a,p,1.5); endfor;
- draw p withcolor red;
-endfig;
-
-beginfig(3);
- path q;
- q = reverse (p yscaled (-1)) shifted (up*10.5u);
- fill (p--q--cycle) withcolor red;
- for a=46 step 3 until 120:
- lensrefractray(origin,a,p,q,1.4);
+ ad=83;
+ len = 5cm;
+ path p,q;
+ pair sourc;
+ sourc = (-2u,0);
+ p=(-5u,0){up}..{right}(3u,9u);
+ q=(6u,0)..{dir(ad)}(10u,11u);
+ for a=60 step 3 until 120:
+ %reflectray(sourc,a,p,len);
+ doublereflection(sourc,a,p,q,len,0.3*len);
endfor;
+ draw p withcolor red;
+ draw q withcolor red;
endfig;
end. \ No newline at end of file