diff options
author | Norbert Preining <norbert@preining.info> | 2022-10-13 03:01:48 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-10-13 03:01:48 +0000 |
commit | ba720f8eaac74c537fb16f8556e4cf0ab4cd8235 (patch) | |
tree | e6932ca49174877c4ef511fd5c01d614b988b449 /macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp | |
parent | b9fbd9245255da7a36ca3b07890c471c708f7777 (diff) |
CTAN sync 202210130301
Diffstat (limited to 'macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp')
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp b/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp new file mode 100644 index 0000000000..12d82c2850 --- /dev/null +++ b/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp @@ -0,0 +1,73 @@ +color CouleurEngrenage; + +vardef sin(expr t) = sind(c*t) enddef; + +vardef cos(expr t) = cosd(c*t) enddef; + +vardef tan(expr t) = sin(t)/cos(t) enddef; + +vardef Developpante(expr dp)= + save $; + path $; + $=(dp*u)*(1,0) for t=0 step 0.1 until pi: + --((dp*u)*(cos(t)+t*sin(t),sin(t)-t*cos(t))) + endfor; + $ +enddef; + +vardef Entraxe(expr na,nb)= + 0.5*(ModuleEng/u)*(na+nb)+0.04 +enddef; + +vardef Engrenage(expr M,Z,Cc)=%M : Module, Z : nb dents,Cc=Centre + % Pour des engrenages dont le profil est une développante de cercle + save $; + picture $; + ModuleEng:=M*u; + Dp:=ModuleEng*Z;%Module (mm) + + De:=Dp+2*ModuleEng;%Diamètre extérieur + Dpied:=Dp-2.5*ModuleEng;%Diamètre de pied + Alpha:=20;%Angle de pression + Db:=Dp*cosd(Alpha);%Diamètre de base + + pair OPfC,APfC,BPfC,CPfC,Obase[]; + OPfC=(0,0); + path cerclep,cerclee,cercleb,cerclepied; + cerclep=cercles(OPfC,0.5*Dp); + cerclee=cercles(OPfC,0.5*De); + cercleb=cercles(OPfC,0.5*Db); + cerclepied=cercles(OPfC,0.5*Dpied); + path dd,daction,dsupport[],dperp[],dsymetrie,darret; + dd=demidroite(OPfC,OPfC+(0,1)); + APfC=dd intersectionpoint cerclep; + BPfC=dd intersectionpoint cercleb; + path profil; + profil=(symetrie(rotation(Developpante(0.5*Db/(u)),OPfC,90),OPfC,(0,1)) cutafter cerclee);%0.5*Dp*cosd(Alpha)); + %CPfC=dd intersectionpoint cerclepied; + ReleveAngle:=90-angle(profil intersectionpoint cerclep); + dsymetrie=rotation(dd,OPfC,-(360/(4*Z)+ReleveAngle)); + darret=rotation(dd,OPfC,(360/(4*Z)-ReleveAngle)); + pair D; + D=profil intersectionpoint cerclee; + path Profil; + Profil=(reverse(cerclepied) cutbefore darret cutafter dd)--profil--(reverse(cerclee) cutbefore demidroite(OPfC,D) cutafter dsymetrie); + Profil:=Profil--symetrie(reverse(Profil),OPfC,rotation((0,1),OPfC,-(360/(4*Z)+ReleveAngle))); + path ProfilGene; + ProfilGene=Profil + for k=1 upto Z-1: + --rotation(Profil,OPfC,-k*(360/Z)) + endfor + --cycle; + $=image( + fill ProfilGene withcolor CouleurEngrenage; + trace ProfilGene; + fill cercles(OPfC,1u) withcolor blanc; + trace cercles(OPfC,1u); + fill cercles(OPfC,0.85u) withcolor 0.5white; + trace cercles(OPfC,0.85u); + fill rotation((cercles(OPfC,0.25u) shifted (dd intersectionpoint cerclepied)),OPfC,-(360/(4*Z)+ReleveAngle)); + ); + $:=rotation($,OPfC,-90+(360/(4*Z)+ReleveAngle)) shifted Cc; + $ +enddef; |