summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCReperage.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCReperage.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCReperage.tex215
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;