diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCReperage.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCReperage.tex | 215 |
1 files changed, 201 insertions, 14 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCReperage.tex b/macros/latex/contrib/profcollege/latex/PfCReperage.tex index 347ed19498..32e1fac093 100644 --- a/macros/latex/contrib/profcollege/latex/PfCReperage.tex +++ b/macros/latex/contrib/profcollege/latex/PfCReperage.tex @@ -1,7 +1,7 @@ %%% % Reperage %%% -\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AnglePhi=30,CouleurLa=white,CouleurLon=Tomato,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black,Thermometre=false,Mercure=false,CouleurMercure=black,Celsius,Kelvin=false,Farenheit=false,ValeurMin=-4000,ValeurMax=4000,Etages=4,Code=false} +\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AnglePhi=30,CouleurLa=white,CouleurLon=Tomato,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black,Thermometre=false,Mercure=false,CouleurMercure=black,Celsius,Kelvin=false,Farenheit=false,ValeurMin=-4000,ValeurMax=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp"} \defKV[ClesReperage]{Traces=\setKV[ClesReperage]{Code}} % ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :) @@ -20,27 +20,214 @@ % Pour construire le rep\`ere de l'espace \def\buildespace{% \toklistepointespace{}% - \ifboolKV[ClesReperage]{Sphere}{% + \ifboolKV[ClesReperage]{Globe}{% \foreachitem\compteur\in\ListePointEspace{\expandafter\Updatetoksrepere\compteur\nil}% - \[\MPEspaceSphere{\the\toklistepointrepere}{\useKV[ClesReperage]{EchelleEspace}}\] + \[\MPGlobe{\the\toklistepointrepere}{\useKV[ClesReperage]{EchelleEspace}}\] }{% - \foreachitem\compteur\in\ListePointEspace{\expandafter\Updatetoksespace\compteur\nil}% - \ifboolKV[ClesReperage]{AffichageNom}{% - \ifboolKV[ClesReperage]{AffichageCoord}{% - \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{3}{\useKV[ClesReperage]{EchelleEspace}}\]% - }{% - \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{2}{\useKV[ClesReperage]{EchelleEspace}}\]% - }% + \ifboolKV[ClesReperage]{Sphere}{% + \foreachitem\compteur\in\ListePointEspace{\expandafter\Updatetoksrepere\compteur\nil}% + \[\MPEspaceSphere{\the\toklistepointrepere}{\useKV[ClesReperage]{EchelleEspace}}\] }{% - \ifboolKV[ClesReperage]{AffichageCoord}{% - \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{1}{\useKV[ClesReperage]{EchelleEspace}}\]% + \foreachitem\compteur\in\ListePointEspace{\expandafter\Updatetoksespace\compteur\nil}% + \ifboolKV[ClesReperage]{AffichageNom}{% + \ifboolKV[ClesReperage]{AffichageCoord}{% + \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{3}{\useKV[ClesReperage]{EchelleEspace}}\]% + }{% + \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{2}{\useKV[ClesReperage]{EchelleEspace}}\]% + }% }{% - \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{0}{\useKV[ClesReperage]{EchelleEspace}}\]% + \ifboolKV[ClesReperage]{AffichageCoord}{% + \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{1}{\useKV[ClesReperage]{EchelleEspace}}\]% + }{% + \[\MPEspacePave{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\useKV[ClesReperage]{Unitez}}{\useKV[ClesReperage]{Pasz}}{\the\toklistepointespace}{0}{\useKV[ClesReperage]{EchelleEspace}}\]% + }% }% }% }% }% +\def\MPGlobe#1#2{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + % Pour convertir les (Long,lat) données en degrés en (Long,lat) données en radians + vardef ConvDeg(expr fa,fl)= + Famille((fa*pi/180),(fl*pi/180)) + enddef; + %Initialisation + PfCRho=\useKV[ClesReperage]{Rho}; + PfCPhi=\useKV[ClesReperage]{Phi}; + PfCTheta=\useKV[ClesReperage]{Theta}; + color CouleurE,CouleurG; + CouleurE=\useKV[ClesReperage]{CouleurE}; + CouleurG=\useKV[ClesReperage]{CouleurG}; + boolean AffichageNom,Axes; + AffichageNom=\useKV[ClesReperage]{AffichageNom}; + Axes=\useKV[ClesReperage]{Axes}; + Initialisation(PfCRho,PfCTheta,PfCPhi,#2); + eclairage:=false; + nb:=18;% + subh:=36;% + %angx:=-23.5;%anglerotationx; + TR:=(0,0,0); + Ferme2:=true; + typerepre:=\useKV[ClesReperage]{TypeProj}; + if typerepre="persp": + ObjetSphereNew2("R=2"); + ObjetEquateur3("R=2"); + ObjetGreenwich4("R=2"); + elseif typerepre="proj": + ObjetSpherePfC2("R=20"); + ObjetEquateur3("R=20"); + ObjetGreenwich4("R=20"); + else: + ObjetSphereCabinet2("R=5"); + ObjetEquateur3("R=5"); + ObjetGreenwich4("R=5"); + fi; + AffichagePfC2; +% AffichageObjet2; + if \useKV[ClesReperage]{Axes}: + drawoptions(withpen pencircle scaled 1.05 withcolor CouleurE); + AffichageEquateur3; + drawoptions(withpen pencircle scaled 1 withcolor CouleurG); + AffichageGreenwich4; + drawoptions(); + fi; + % Label +% labeloffset:=labeloffset*2; +% label.urt(btex Nord etex,Projette(Image(ConvDeg(90,0))));%(0,0,2)))); +% label.llft(btex Sud etex,Projette(Image(ConvDeg(-90,0))));%(0,0,-2)))); +% label.lft(btex Ouest etex,Projette(Image(ConvDeg(0,-90))));%(0,-2,0)))); +% label.rt(btex Est etex,Projette(Image(ConvDeg(0,90))));%(0,2,0)))); +% labeloffset:=labeloffset/2; + dotlabel.llft(btex \tiny\ang{0} etex,Projette(Image(ConvDeg(0,0)))); + dotlabel.llft(btex \tiny\ang{10} etex,Projette(Image(ConvDeg(10,0)))); + dotlabel.llft(btex \tiny\ang{10} etex,Projette(Image(ConvDeg(0,10)))); + color M[],N[]; + vardef toto(text t)= + n:=1; + for p_=t: + if (n mod 3)=1: + k:=p_; + fi; + if (n mod 3)=2: + l:=p_; + fi; + if (n mod 3)=0: + M[n]=Image(ConvDeg(l,k)); + if l>0: + if k>0: + N[n]=Image(ConvDeg(l+3,k+3)); + else: + N[n]=Image(ConvDeg(l+3,k-3)); + fi; + else: + if k>0: + N[n]=Image(ConvDeg(l-3,k+3)); + else: + N[n]=Image(ConvDeg(l-3,k-3)); + fi; + fi; + label(TEX(p_),Projette(N[n])); + dotlabel.urt("",Projette(M[n])); + fi; + n:=n+1; + endfor; + enddef; + if AffichageNom: + toto(#1); + fi; +% label.top(TEX(decimal(redpart(Oeil))&","&decimal(greenpart(Oeil))&","&decimal(bluepart(Oeil))),Projette(Image(ConvDeg(90,0)))+(0,3cm));%&),(0,1cm)); +% TraceAxes; +% label.top(btex Oeil etex,Projette(Image(Oeil))); +% label.top(TEX("Oeil="&decimal(greenpart(Oeil))),(0,2cm)); +% label.top(TEX("Oeil="&decimal(bluepart(Oeil))),(0,3cm)); + \end{mplibcode} + \else + \begin{mpost}[mpsettings={PfCRho=\useKV[ClesReperage]{Rho};PfCPhi=\useKV[ClesReperage]{Phi};PfCTheta=\useKV[ClesReperage]{Theta};color CouleurE,CouleurG;CouleurE=\useKV[ClesReperage]{CouleurE};CouleurG=\useKV[ClesReperage]{CouleurG};boolean AffichageNom,Axes;AffichageNom=\useKV[ClesReperage]{AffichageNom};Axes=\useKV[ClesReperage]{Axes};}] + input PfCSolid; + % + % Pour convertir les (Long,lat) données en degrés en (Long,lat) données en radians + vardef ConvDeg(expr fa,fl)= + Famille((fa*pi/180),(fl*pi/180)) + enddef; + %Initialisation + Initialisation(PfCRho,PfCTheta,PfCPhi,#2); + nb:=18;% + subh:=36;% + %angx:=-23.5;%anglerotationx; + TR:=(0,0,0); + Ferme2:=true; + typerepre:=\useKV[ClesReperage]{TypeProj}; + if typerepre="proj": + ObjetSphereNew2("R=10"); + ObjetEquateur3("R=10"); + ObjetGreenwich4("R=10"); + else: + ObjetSphereNew2("R=2"); + ObjetEquateur3("R=2"); + ObjetGreenwich4("R=2"); + fi; + AffichagePfC2; + if Axes: + drawoptions(withpen pencircle scaled 1.05 withcolor CouleurE); + ObjetEquateur3("R=2"); + AffichageEquateur3; + drawoptions(withpen pencircle scaled 1 withcolor CouleurG); + ObjetGreenwich4("R=2"); + AffichageGreenwich4; + drawoptions(); + fi; + % Label +% labeloffset:=labeloffset*2; +% label.urt(btex Nord etex,Projette(Image(ConvDeg(90,0))));%(0,0,2)))); +% label.llft(btex Sud etex,Projette(Image(ConvDeg(-90,0))));%(0,0,-2)))); +% label.lft(btex Ouest etex,Projette(Image(ConvDeg(0,-90))));%(0,-2,0)))); +% label.rt(btex Est etex,Projette(Image(ConvDeg(0,90))));%(0,2,0)))); +% labeloffset:=labeloffset/2; + dotlabel.llft(btex \tiny\ang{0} etex,Projette(Image(ConvDeg(0,0)))); + dotlabel.llft(btex \tiny\ang{10} etex,Projette(Image(ConvDeg(10,0)))); + dotlabel.llft(btex \tiny\ang{10} etex,Projette(Image(ConvDeg(0,10)))); + color M[],N[]; + vardef toto(text t)= + n:=1; + for p_=t: + if (n mod 3)=1: + k:=p_; + fi; + if (n mod 3)=2: + l:=p_; + fi; + if (n mod 3)=0: + M[n]=Image(ConvDeg(l,k)); + if l>0: + if k>0: + N[n]=Image(ConvDeg(l+3,k+3)); + else: + N[n]=Image(ConvDeg(l+3,k-3)); + fi; + else: + if k>0: + N[n]=Image(ConvDeg(l-3,k+3)); + else: + N[n]=Image(ConvDeg(l-3,k-3)); + fi; + fi; + label(TEX(p_),Projette(N[n])); + dotlabel.urt("",Projette(M[n])); + fi; + n:=n+1; + endfor; + enddef; + if AffichageNom: + toto(#1); + fi; + \end{mpost} + \fi +}% + \def\MPEspaceSphere#1#2{% \ifluatex \begin{mplibcode} @@ -62,7 +249,7 @@ trace (subpath((0.75+anglephi/360)*length Equateur,(1.25+anglephi/360)*length Equateur) of Equateur) withcolor 0.7white; path greenwich; greenwich=cercles(O,C,O,C,Z); - trace subpath(3*length greenwich/4,5*length greenwich/4) of greenwich withcolor 0.7white; + trace subpath(3*length greenwich/4,5*length greenwich/4) of greenwich withcolor 0.2white; clip currentpicture to cercles(O,A,O,A,Z); trace chemin(C,O,Z) dashed evenly withcolor 0.85white; trace chemin(O,2[Z,O]) dashed evenly withcolor 0.85white; |