diff options
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/fis1prex.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/featpost/example/fis1prex.mp | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/fis1prex.mp b/Master/texmf-dist/doc/metapost/featpost/example/fis1prex.mp new file mode 100644 index 00000000000..61c23b56e9c --- /dev/null +++ b/Master/texmf-dist/doc/metapost/featpost/example/fis1prex.mp @@ -0,0 +1,198 @@ +% fis1prex.mp +% L. Nobre G. +% 2003 + +input featpost3Dplus2D; + +verbatimtex +\documentclass{article} +\usepackage{beton} +\usepackage{concmath} +\usepackage{ccfonts} +\begin{document} +etex + +beginfig(1); + numeric largtecto, molasfrac, altutecto, compcorda, espetecto; + numeric largmolas, largnum, cordafrac, espesfrac, largmolfr; + numeric u, alpha, i, numturns, alphafrac, alpharadi, rcf, rcd; + pen mainp, auxip; + path leftspr, rightsp, corda, boxtecto, traco, linhalpha, rcp; + pair esqutecto, diretecto, esquemola, direimola, espessvec; + largnum = 100; + u = 1mm; + molasfrac = 0.8; + espesfrac = 0.1; + cordafrac = 0.3; + alphafrac = 0.3; + largmolfr = 0.12; + rcf = 0.1; + numturns = 11; + alpha = 120; + mainp = pencircle scaled 0.4u; + auxip = pencircle scaled 0.2u; + largtecto = largnum*u; + rcd = rcf*largtecto; + largmolas = largmolfr*molasfrac*largtecto; + compcorda = cordafrac*largtecto; + espetecto = espesfrac*largtecto; + altutecto = 0.5*largtecto*molasfrac*cosd(alpha/2)/sind(alpha/2); + alpharadi = 2*alphafrac*altutecto; + esqutecto = (-largtecto/2,altutecto); + diretecto = (largtecto/2,altutecto); + esquemola = (-largtecto*molasfrac/2,altutecto); + direimola = (largtecto*molasfrac/2,altutecto); + espessvec = (0,espetecto); + boxtecto = esqutecto-- + diretecto-- + (diretecto+espessvec)-- + (esqutecto+espessvec)--cycle; + traco = (origin--(dir(45))) scaled 6in; + for i=-largnum upto largnum: + draw traco shifted (2*i*u,0) withpen auxip; + endfor; + clip currentpicture to boxtecto; + pickup mainp; + draw esqutecto--diretecto; + leftspr = springpath(direimola,origin,numturns,largmolas,0.55); + rightsp = springpath(origin,esquemola,numturns,largmolas,0.55); + draw leftspr; + draw rightsp; + rcp = randomcirc( rcd, 0.1*rcd, 180 ) shifted (0,-compcorda); + draw rcp; + draw origin--(0,-compcorda) cutafter rcp; + linhalpha = fullcircle scaled alpharadi; + linhalpha := linhalpha cutafter rightsp; + linhalpha := linhalpha cutbefore leftspr; + draw linhalpha withpen auxip; + label(btex m etex scaled 3, (0,-compcorda) ); + label.urt(btex $\alpha$ etex scaled 3, (0,alpharadi/2) ); +endfig; + +beginfig(3); + numeric u, largtecto, altutecto, espetecto, largmolas, rcd, largnum; + numeric spfraca, spfracb, angex, lenfactor, lenspringb, largfac; + numeric lenfel, lenwei; + pen mainp, auxip; + path molapatha, molapathb, rcpa, rcpb, boxtecto, traco; + pair esqutecto, diretecto, espessvec, fixpoi, springbextreme, fel, wei, res; + color graycol; + mainp = pencircle scaled 0.4mm; + auxip = pencircle scaled 0.2mm; + angex = 36; + lenfactor = 1.35; + largtecto = 100mm; + espetecto = 10mm; + altutecto = 50mm; + largmolas = 7mm; + rcd = 6mm; + lenfel = 34.5mm; + lenwei = 20mm; + largnum = 100; + spfraca = 0.65; + graycol = 0.67white; + largfac = 0.5*(1+lenfactor); + fel = lenfel*dir(90+angex); + wei = lenwei*down; + res = fel+wei; + lenspringb = altutecto*lenfactor; + spfracb = 1-altutecto*(1-spfraca)/lenspringb; + randomseed := 3976; + esqutecto = (-largtecto/2,altutecto); + diretecto = (largtecto/2,altutecto); + espessvec = (0,espetecto); + fixpoi = (0,altutecto); + springbextreme = fixpoi+lenspringb*dir(angex-90); + fel := springbextreme+fel; + wei := springbextreme+wei; + res := springbextreme+res; + boxtecto = esqutecto-- + diretecto-- + (diretecto+espessvec)-- + (esqutecto+espessvec)--cycle; + traco = (origin--(dir(45))) scaled 6in; + for i=-largnum upto largnum: + draw traco shifted (2*i*mm,0) withpen auxip; + endfor; + clip currentpicture to boxtecto; + pickup mainp; + draw esqutecto--diretecto; + molapatha = springpath(fixpoi,origin,11,largmolas,spfraca); + draw molapatha withcolor graycol; + rcpa = randomcirc( rcd, 0.1*rcd, 24 ); + unfill rcpa; + draw rcpa withcolor graycol; + molapathb = springpath(fixpoi,springbextreme,11,largmolas/largfac,spfracb); + draw molapathb; + rcpb = rcpa rotated angex shifted springbextreme; + unfill rcpb; + draw rcpb; + drawoptions( withcolor blue ); + drawarrow springbextreme--fel; + drawarrow springbextreme--wei; + drawarrow springbextreme--res; + label.urt( btex $\vec{F}_{el}$ etex, fel ); + label.llft( btex $\vec{F}_{R}$ etex, res ); + label.ulft( btex $\vec{F}_{g}$ etex, wei ); +endfig; + +beginfig(2); + numeric u, basesize, baseheight, alphang, thetang, sfearsize; + numeric armsize, marginraise, totalraise, axeray, cardansize; + color basepos, tdorigin, oneaxe, otheraxe, rotaxbascenter, axedir; + color gluaxbascenter, rotrajcenter, cardanpos, refpoint, anotheraxe; + color armdir, armbasonepos, armbastwopos, sfearpos; + path glueaxebase, rotataxebase, rotrajector, axepath, sfearpath; + numeric armray; + u = 0.0125mm; + basesize = 30u; + baseheight = 3u; + alphang = 20; + thetang = -18; + armsize = 25u; + marginraise = 6u; + axeray = 3u; + cardansize = 3u; + sfearsize = 4u; + armray = 1.5u; + totalraise = armsize*sind(alphang)+marginraise+cardansize*cosd(alphang); + basepos = (0,0,-0.5baseheight); + f := -2*(-2basesize,-basesize,-5baseheight); + kindofcube(false, false, basepos, 0, 0, 0, 2basesize, 2basesize, baseheight ); + tdorigin = (0,0,0); + oneaxe = (0,axeray/cosd(alphang),0); + otheraxe = (1,0,0); + anotheraxe = (0,cosd(alphang),-sind(alphang)); + gluaxbascenter = tdorigin - (0,totalraise*sind(alphang),0); + glueaxebase = ellipticpath( gluaxbascenter, oneaxe, axeray*otheraxe ); + axedir = (0,sind(alphang),cosd(alphang)); + rotrajcenter = (0,0,totalraise); + rotaxbascenter = rotrajcenter-axedir*cardansize; + refpoint = rotrajcenter+axedir*cardansize; + rotataxebase = rigorouscircle( rotaxbascenter, axedir, axeray ); + rotrajector = rigorouscircle( rotrajcenter, axedir, armsize ); + axepath = twocyclestogether( glueaxebase, rotataxebase ); + fill axepath withcolor background; + draw axepath; + draw rotataxebase; + drawarrow subpath (3,10.5) of rotrajector dashed evenly; +% dotlabel.top( btex 1 etex, point 1 of rotrajector ); +% dotlabel.top( btex 5 etex, point 5 of rotrajector ); +% dotlabel.top( btex 3 etex, point 3 of rotrajector ); + kindofcube(false,false,rotrajcenter,90,90-alphang,thetang,2cardansize,2cardansize,2cardansize); + draw rp(refpoint); + armdir := otheraxe*cosd(thetang)+anotheraxe*sind(thetang); + armbasonepos = rotrajcenter + cardansize*armdir; + armbastwopos = rotrajcenter + (armsize-sfearsize)*armdir; % NOT RIGOROUS + sfearpos = rotrajcenter + armsize*armdir; + rigorousdisc( 0, true, armbasonepos, armray, armbastwopos-armbasonepos ); + sfearpath = rigorousfearpath( sfearpos, sfearsize ); + fill sfearpath withcolor background; + draw sfearpath; +endfig; + +verbatimtex +\end{document} +etex + +end; |