diff options
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/photorefer.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/featpost/example/photorefer.mp | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/photorefer.mp b/Master/texmf-dist/doc/metapost/featpost/example/photorefer.mp new file mode 100644 index 00000000000..9a96b24c416 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/featpost/example/photorefer.mp @@ -0,0 +1,198 @@ +% photorefer.mp +% L. Nobre G. +% 2006 + +input featpost3Dplus2D; + +%\usepackage{beton,concmath,ccfonts} + +verbatimtex \documentclass{article} \begin{document} etex + +f := ( 6, 5, 2.5 ); +Spread := 160; + +beginfig(2); + color a, x, b, c, D, y, w, g, h; + color auxa, auxb, auxc, auxd, auxe, auxf, azz, azy, bzz, bzy; + pair appear, rpc, rpch, rpcv; + numeric wid, hei, alfa, beta, forw, back, labscal, framang, lx, ly, verscal; + pen thedotpen, borderpen, normalpen; + picture dasha, dashb, labx, laba, labb, labc, labD, labh, labv; + path outerb, innerb, apath, bpath; + framang = 0; + alfa = 0; + beta = 0; +% framang = -15; +% alfa = -20; +% beta = -15; + + wid = 1.5; + hei = 1; + forw = 1.5; + back = 1.5; + lx = 1.15; + ly = 0.4; + verscal = 0.47; + labscal = 2.8; + labeloffset := 8pt; + ahangle := 30; + ahlength := 10pt; + b = ( -0.8*back, 0.25*wid, 0.9*hei ); + c = ( 0, 0.85*wid, 0.35*hei ); + D = ( cosd( alfa )*cosd( beta ), sind( alfa )*cosd( beta ), sind( beta ) ); + a = c+0.95*D; +% a = c+0.7*D; + labx = btex $\vec{p}$ etex scaled labscal; + laba = btex $\vec{f}$ etex scaled labscal; + labb = btex $\vec{R}$ etex scaled labscal; + labc = btex $\vec{o}$ etex scaled labscal; + labh = btex $\hat{h}$ etex scaled labscal; + labv = btex $\hat{v}$ etex scaled labscal; + thedotpen = pencircle scaled 4pt; + borderpen = pencircle scaled 2pt; + normalpen = pencircle scaled 1.5pt; + dasha = evenly scaled 2; +% dashb = dashpattern( on 7pt off 5pt on 7pt ); + dashb = withdots; + azz = (X(a),Y(a),0); + azy = (X(a),0,Z(a)); + bzz = (X(b),Y(b),0); + bzy = (X(b),0,Z(b)); + apath = rp(azz)--rp(a)--rp(azy); + bpath = rp(bzz)--rp(b)--rp(bzy); + auxa = ( forw, 0, 0 ); + auxb = ( forw, 0, hei ); + auxc = ( -back, 0, hei ); + auxd = ( -back, 0, 0 ); + auxe = ( -back, wid, 0 ); + auxf = ( forw, wid, 0 ); + outerb = rp(auxa)--rp(auxb)--rp(auxc)--rp(auxd)--rp(auxe)--rp(auxf)--cycle; + draw outerb withpen borderpen; + draw rp(auxa)--rp(auxd) withpen borderpen; + + draw bpath dashed dasha withpen normalpen; + draw rp(b) withpen thedotpen; + label.rt( labb, rp(b) ); + + draw rp(a)--rp(b) withpen normalpen; + + cdotprod( y-c, D ) = 0; + cdotprod( y-black, green ) = 0; + cdotprod( y-black, blue ) = 0; + + cdotprod( w-c, D ) = 0; + cdotprod( w-black, green ) = 0; + cdotprod( w-hei*blue, blue ) = 0; + + cdotprod( g-c, D ) = 0; + cdotprod( g-wid*green, green ) = 0; + cdotprod( g-hei*blue, blue ) = 0; + + cdotprod( h-c, D ) = 0; + cdotprod( h-wid*green, green ) = 0; + cdotprod( h-black, blue ) = 0; + + innerb = rp(y)--rp(w)--rp(g)--rp(h)--cycle; + unfill innerb; + draw innerb withpen borderpen; + + draw apath dashed dasha withpen normalpen; + draw rp(a) withpen thedotpen; + label.llft( laba, rp(a) ); + + x = whatever[a,b]; + cdotprod( x-c, D ) = 0; + draw rp(x) withpen thedotpen; + label.lft( labx, rp(x) ); + + draw rp(a)--rp(x) withpen normalpen; + draw rp(x)--rp(b) withpen normalpen dashed dashb; + + draw rp(c) withpen thedotpen; + draw rp(a)--rp(c) withpen borderpen; + label.bot( labc, rp(c) ); + + numeric theang; + color perpo, perpa, perph, perpv; + perpo = N( x-c ); + perpa = ncrossprod( D, c-x ); + theang = -getangle( w-y, perpa ); + perph = perpo*cosd( framang+theang ) + perpa*sind( framang+theang ); + perpv =-perpo*sind( framang+theang ) + perpa*cosd( framang+theang ); + color corn, corm; + numeric coox, cooy; + coox = cdotprod( x-c, perph ); + cooy = cdotprod( x-c, perpv ); + draw rp(c)--rp(c+lx*perph)--rp(c+lx*perph+ly*perpv) + --rp(c+ly*perpv)--cycle dashed evenly; + draw rp(c)--rp(c+coox*perph)--rp(c+coox*perph+cooy*perpv) + --rp(c+cooy*perpv)--cycle dashed evenly; + rpc = rp(c); + rpch = rp(c+verscal*perph); + rpcv = rp(c+verscal*perpv); + drawarrow rpc--rpch withpen normalpen; + drawarrow rpc--rpcv withpen normalpen; + label.rt( labv, rpcv ); +% label.top( labh, rpch ); + label.lrt( labh, rpch ); +endfig; + +f := ( 5, 3, 1 ); +Spread := 70; + +beginfig(1); + labeloffset := 3pt; + ahangle := 30; + ahlength := 5pt; + numeric alpha, beta, gamma, axeslen, blen, angray; + alpha = 65; + beta = 70; + gamma = 75; + blen = 1.4; + axeslen = 1.2; + angray = 0.4; + orthaxes( axeslen, btex $E$ etex, axeslen, btex $N$ etex, axeslen, btex $Z$ etex ); + path vo, vh, vv, vhp, vop; + z0 = rp( black ); + color po, ph, pv, php, pop; + pop = ( cosd(alpha), sind(alpha), 0 ); + po = blen*( cosd(beta)*pop + sind(beta)*blue ); + php = ( sind(alpha), -cosd(alpha), 0 ); + numeric hx, hy, hv, vx, vy, vz; + hx = sind(alpha)*cosd(gamma)-sind(beta)*cosd(alpha)*sind(gamma); + hy =-cosd(alpha)*cosd(gamma)-sind(beta)*sind(alpha)*sind(gamma); + hz = cosd(beta)*sind(gamma); + vx =-sind(alpha)*sind(gamma)-sind(beta)*cosd(alpha)*cosd(gamma); + vy = cosd(alpha)*sind(gamma)-sind(beta)*sind(alpha)*cosd(gamma); + vz = cosd(beta)*cosd(gamma); + ph = ( hx, hy, hz ); + pv = ( vx, vy, vz ); + z1 = rp( po ); + z2 = rp( ph ); + z3 = rp( pv ); + z4 = rp( php ); + z5 = rp( pop ); + vo = z0--z1; + vh = z0--z2; + vv = z0--z3; + vhp = z0--z4; + vop = z0--z5; + drawarrow vo; + drawarrow vh; + drawarrow vv; + draw vhp dashed evenly; + draw vop dashed evenly; + squareangline( ph, pv, black, 0.1 ); + angline( pop, po, black, angray, btex $\beta$ etex, rt ); + angline( php, ph, black, angray, btex $\gamma$ etex, lft ); + angline( red, pop, black, angray, btex $\alpha$ etex, bot ); + label.top( btex $\vec{f}-\vec{o}$ etex, z1 ); + label.top( btex $\hat{h}$ etex, z2 ); + label.top( btex $\hat{v}$ etex, z3 ); +endfig; + +verbatimtex +\end{document} +etex + +end. |