diff options
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/optica.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/featpost/example/optica.mp | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/optica.mp b/Master/texmf-dist/doc/metapost/featpost/example/optica.mp new file mode 100644 index 00000000000..1da10517f82 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/featpost/example/optica.mp @@ -0,0 +1,206 @@ +% optica.mp +% P. J. Sebastiao + +input featpost3Dplus2D; + +% bash: export TEX=latex +% tcsh: setenv TEX latex + +verbatimtex \documentclass{article} \usepackage{beton} \usepackage{concmath} \usepackage{ccfonts} \begin{document} etex + +beginfig(1); + color orig, axxc, ayyc, azzc; + color field, nalfa, ngamma[], alfacnt, gammacnt, nazy, nax, proj, align; + path alfa, gamma; + numeric nalfad, theta, radius, gammang, xxsize, yysize, zzsize; + numeric xxpos, yypos, zzpos, fieldpos, deltarad, deltapos,angrecto; + numeric thetarad, thetapos, nalfapos, ngammapos,veccpos,betarad,betapos; + numeric etalpharad, etalphapos, alphapos, gammapos; + picture xxlabel, yylabel, zzlabel, fieldlabel, deltalabel, xxcalabel,yycalabel,aMlabel; + picture nalfalabel, ngammalabel, etalphalabel, alphalabel; + picture gammalabel, thetalabel,vecclabel,betalabel; + + f := (3,4,2); + nbeta := 1.3; + beta := 12; + betarad := 0.6; + betapos := 1; + deltarad := 0.8; + deltapos := 2; + nalfad := 1.0; + theta := 15; + delta := 35; + thetarad := 0.3; + thetapos := 2; + nalfapos := 1; + gammang := 60; + ngammapos := 7; + etalpharad := 0.6; + etalphapos := 2; + alphapos := 2; + alpharad := 0.9; + gammapos := 4; + Spread := 100; + xxsize := 0.8; + xxpos := 6; + yysize := 1.3; + yypos := 6; + zzsize := 1.3; + zzpos := 4; +% angrecto := 0.2; + + xxcalabel = btex $x_{\mbox{\protect \scriptsize }}$ etex; + yycalabel = btex $y_{\mbox{\protect \scriptsize }}$ etex; + xxlabel = btex $\mbox{\protect \scriptsize ligth}$ etex; + yylabel = btex $\mbox{\protect \scriptsize analyser}$ etex; + zzlabel = btex $\mbox{\protect \scriptsize polariser}$ etex; + deltalabel = btex $\Delta$ etex; + aMlabel = btex $\bar{\alpha}$ etex; + fieldlabel = btex $\mathbf{B}$ etex; + thetalabel = btex $\Delta$ etex; + betalabel = btex $\xi$ etex; + nalfalabel = btex $\mathbf{n}_a$ etex; + ngammalabel = btex $\mathbf{n}_\gamma$ etex; + etalphalabel= btex $\theta$ etex; + alphalabel = btex $\alpha$ etex; + gammalabel = btex $\gamma$ etex; + vecclabel = btex $\mathbf{c}$ etex; + veccpos = 3; + field = (0.7,0,0); + fieldpos = 2; + orig = (0,0,0); + axxc = (xxsize,0,0); + ayyc = (0,yysize,0); + azzc = (0,0,zzsize); + nalfa = (0,nbeta*cosd(beta)*sind(delta),nbeta*cosd(beta)*cosd(delta)); + alfacnt = nalfa; + radius = nbeta*sind(beta); + alfa = rigorouscircle( alfacnt, (0,0,1), radius ); + gammacnt = nalfa; + gamma = rigorouscircle( gammacnt, nalfa, radius ); + + for i=0 step 40 until 0: + nazy := radius*sind(gammang+i)*ncrossprod( nalfa, axxc ); + nax := radius*cosd(gammang+i)*ncrossprod( ayyc, nalfa ); + ngamma[i] := gammacnt+nax+nazy; + pickup pencircle scaled 1.5; + drawarrow rp(orig)..rp(ngamma[i]); + endfor; + pickup pencircle scaled 0.5; + +% draw alfa dashed evenly; + align = 1*(0,+sind(10),cosd(10)); + draw rp(orig)..rp(align); + drawarrow rp(orig)..rp(axxc); + drawarrow rp(orig)..rp(ayyc); +% draw rp(orig)..rp(-axxc); + drawarrow rp(orig)..rp(azzc); +% drawarrow rp(orig)..rp(field); + draw rp(orig)..rp(nalfa); +% draw subpath (3.05,1.05) of alfa; +% drawarrow subpath (4,3) of alfa; +% draw subpath (0,1.3) of gamma; +% draw subpath (7.5,8) of gamma; +% drawarrow subpath (1,2) of gamma; +% anglinen( field, azzc, orig, deltarad, deltalabel, deltapos ); + anglinen( ngamma0, nalfa, orig, betarad, betalabel, betapos ); + anglinen( azzc, align, orig, deltarad, deltalabel, deltapos ); + anglinen( align, nalfa, orig, deltarad, aMlabel, deltapos ); +% anglinen( ngamma0, field, orig, etalpharad, etalphalabel, etalphapos ); + labeln( xxlabel, rp(axxc), xxpos ); + labeln( yylabel, rp(ayyc), yypos ); + labeln( zzlabel, rp(azzc), zzpos ); +% labeln( fieldlabel, rp(field), fieldpos ); +% labeln( nalfalabel, rp(nalfa), nalfapos ); + labeln( ngammalabel, rp(ngamma0), ngammapos ); +% labeln( alphalabel, point 1.8 of alfa, alphapos ); + labeln( gammalabel, point 2.1 of gamma, gammapos ); +% labeln( xxcalabel, rp(gammacnt+1.3*radius*(1,0,0)), 1); +% labeln( yycalabel, rp(gammacnt+1.3*radius*(0,1,-sind(theta))), 2); + pickup pencircle scaled 0.5; + draw rp((0,0,0))..rp(alfacnt); + draw rp(gammacnt); + pickup pencircle scaled 0.5; + + path arco, recta_um, recta_quatro, recta_dois, recta_ylayer, recta_xlayer, path_ngamma, recta_tres; + color tmp, tmpo; + pickup pencircle scaled 0.5; + tmp = gammacnt+radius*(0,-cosd(delta),sind(delta)); + tmpo = gammacnt+radius*(0,cosd(delta),-sind(delta)); + recta_um = rp(tmpo)--rp(gammacnt)--rp(tmp)--rp((0,0,Z(tmp))); + draw recta_um; + +% align = (0,Z(tmp)*sind(10),Z(tmp)); + drawarrow rp(orig)--rp((0,Z(tmp)*sind(10),Z(tmp))); + labeln( btex $\mbox{\protect \scriptsize rubbing}$ etex, rp((0,Z(tmp)*sind(10),Z(tmp))), 1 ); + + + angrecto=nbeta*cosd(beta); + recta_quatro = rp((0,angrecto*sind(delta),angrecto*cosd(delta)))--rp((0,angrecto*sind(delta),0)); +% recta_tres = rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),angrecto*cosd(delta)))--rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),0)); + recta_tres = rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),angrecto*cosd(delta)-radius*sind(gammang)*sind(delta)))--rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),0)); + +% recta_dois = rp(angrecto*cosd(delta)*(0,0,1))--rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),angrecto*cosd(delta))); +% recta_dois = rp(gammacnt)--rp((0,angrecto*sind(delta)+radius*sind(gammang)*cosd(delta),angrecto*cosd(delta))); + recta_dois = rp(gammacnt)--rp((0,nbeta*cosd(beta)*sind(delta),0)); +% draw recta_dois; + draw recta_tres; +% draw recta_quatro; + + pickup pencircle scaled 1; + arco = (alfa cutbefore recta_dois) cutafter recta_um; +% draw arco; + + + pickup pencircle scaled 0.5; + drawarrow rp(gammacnt)--rp(gammacnt+1.3*radius*(1,0,0)); + +% path_ngamma = rp(gammacnt)--rp(ngamma0); + path_ngamma = rp(gammacnt)--rp(ngamma0)--rp((0,0,0)); + draw path_ngamma; +%%% c vector +% drawarrow rp(gammacnt)--rp(ngamma0); + + recta_xlayer = rp(gammacnt)--rp(gammacnt+1.3*radius*(1,0,0)); +% recta_xlayer = rp(gammacnt)--rp(gammacnt+1.3*radius*(0,1,-sind(theta))); + drawarrow recta_xlayer; + + +% recta_ylayer = rp(gammacnt)--rp(gammacnt+1.3*radius*(0,1,-sind(theta))); +% drawarrow recta_ylayer; + + proj = gammacnt+radius*sind(gammang)*(0,cosd(delta),-sind(delta)); + recta_ylayer = rp(gammacnt)--rp(proj); + draw recta_ylayer; + draw rp(ngamma0)..rp(proj); + draw rp(orig)..rp(proj); + draw rp(ngamma0)..rp(1.1*etalpharad*(1,0,0)+proj); + draw rp(1.1*etalpharad*(1,0,0)+proj)..rp(1.1*etalpharad*(1,0,0)); +% draw rp(radius*cosd(gammang)*(1,0,0))..rp(ngamma0); + anglinen( proj, nalfa, orig, alpharad, alphalabel, alphapos ); + + pickup pencircle scaled 1; + + arco := (gamma cutbefore recta_xlayer) cutafter path_ngamma; + draw gamma; +% draw arco; + undraw arco; + arco := (gamma cutbefore recta_ylayer) cutafter path_ngamma; +% draw gamma; +% draw arco; + undraw arco; + + pickup pencircle scaled 0.5; + draw gamma dashed evenly; + +% draw subpath (0,0.9) of gamma; +% draw subpath (7.6,8) of gamma; +% draw subpath (1.5,8) of gamma; +% draw subpath (3.2,1.2) of alfa; +% labeln( vecclabel, rp(ngamma0), veccpos); + anglinen( ngamma0, field, orig, etalpharad, etalphalabel, etalphapos ); +endfig; + +verbatimtex \end{document} etex + +end; |