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.tex321
1 files changed, 186 insertions, 135 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCReperage.tex b/macros/latex/contrib/profcollege/latex/PfCReperage.tex
index 6ab6ebf847..4c116cff67 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,AffichageUnites=true,MarquePrimaire=true,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,ValeurMiny=-4000,ValeurMaxy=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp",Niveaux=false,Decale=false,Tiret=false,Cadre=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,AffichageUnites=true,MarquePrimaire=true,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,ValeurMiny=-4000,ValeurMaxy=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp",Niveaux=false,Decale=false,Tiret=false,Cadre=false,ModeleCouleur=5,EchelleCroix=1,CouleurCroix=black}
\defKV[ClesReperage]{Traces=\setKV[ClesReperage]{Code}}%
\defKV[ClesReperage]{Niveau=\setKV[ClesReperage]{Etages=#1}\setKV[ClesReperage]{Niveaux}}%
% ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :)
@@ -53,6 +53,13 @@
\mplibnumbersystem{double}%
\mplibforcehmode%
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+
+ if defaultcolormodel=7:
+ cmykcolor black;
+ black=(0,0,0,1);
+ fi;
+
input PfCSolid;
% Pour convertir les (Long,lat) données en degrés en (Long,lat) données en radians
vardef ConvDeg(expr fa,fl)=
@@ -235,7 +242,13 @@
\def\MPEspaceSphere#1#2{%
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor white,blanc;
+ white=(0,0,0,1);
+ blanc=(0,0,0,0);
+ fi;
typetrace:="3D";
typerepre:="persp";
anglephi:=\useKV[ClesReperage]{AnglePhi};
@@ -425,136 +438,142 @@
\def\MPEspacePave#1#2#3#4#5#6#7#8#9{%
\ifluatex%
\mplibforcehmode%
- \begin{mplibcode}
- typetrace:="3D";
- typerepre:="persp";
- Figure(-20u,-20u,20u,20u);
- Initialisation(1500,30,20,abs(#9));
- %marque_r:=marque_r/2;
- marque_p:="plein";
- color A,B,C,D,E,F,G,H,M[],N[];
- draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
- if #9>0:
- drawarrow Projette(A)--Projette(1.5[D,A]);
- drawarrow Projette(C)--Projette(1.5[D,C]);
- drawarrow Projette(E)--Projette(1.5[D,E]);
- label.top(btex $x$ etex,Projette(1.5[D,A]));
- label.top(btex $y$ etex,Projette(1.5[D,C]));
- label.top(btex $z$ etex,Projette(1.5[D,E]));
- label.ulft(btex 1 etex,Projette((1/#2)[D,A]));
- label.bot(btex 1 etex,Projette((1/#4)[D,C]));
- label.lft(btex 1 etex,Projette((1/#6)[D,E]));
- for k=1 upto (#2):
- pointe((k/#2)[D,A]);
- endfor;
- for k=1 upto (#4):
- pointe((k/#4)[D,C]);
- endfor;
- for k=1 upto (#6):
- pointe((k/#6)[D,E]);
- endfor;
- else:
- drawarrow Projette(D)--Projette(1.5[A,D]) dashed evenly;
- drawarrow Projette(B)--Projette(1.5[A,B]);
- drawarrow Projette(F)--Projette(1.5[A,F]);
- label.lrt(btex $x$ etex,Projette(1.5[A,D]));
- label.top(btex $y$ etex,Projette(1.5[A,B]));
- label.top(btex $z$ etex,Projette(1.5[A,F]));
- label.ulft(btex 1 etex,Projette((1/#2)[A,D]));
- label.bot(btex 1 etex,Projette((1/#4)[A,B]));
- label.lft(btex 1 etex,Projette((1/#6)[A,F]));
- for k=1 upto (#2):
- pointe((k/#2)[A,D]);
- endfor;
- for k=1 upto (#4):
- pointe((k/#4)[A,B]);
- endfor;
- for k=1 upto (#6):
- pointe((k/#6)[A,F]);
- endfor;
- fi;
- vardef tata(text t)=
- n:=1;%pour compter combien de points
- k:=0;%pour garder l'abscisse
- l:=0;%pour garder l'ordonn\'ee
- m:=0;%pour garder l'altitude
- if #8>0:
- for p_=t:
- if (n mod 4)=1:
- k:=p_;
- fi;
- if (n mod 4)=2:
- l:=p_;
- fi;
- if (n mod 4)=3:
- m:=p_;
- fi;
- if (n mod 4)=0:
- M[n]=(k/#2)[D,A]+(l/#4)*(C-D)+(m/#6)*(E-D);
- N[n]=(k/#2)[D,A]+(l/#4)*(C-D);
- if (#8>1):
- label.top(TEX(p_),Projette(M[n]));
- pointe(M[n]);
- fi;
- if (#8=1) or (#8=3) :
- drawoptions(dashed evenly withcolor gris);
- draw segment(M[n],(0,0,bluepart(M[n])));
- draw segment(M[n],N[n]);
- draw segment(N[n],(redpart(M[n]),0,0));
- draw segment(N[n],(0,greenpart(M[n]),0));
- drawoptions();
- fi;
- fi;
- n:=n+1;
- endfor;
- fi;
- enddef;
- vardef toto(text t)=
- n:=1;%pour compter combien de points
- k:=0;%pour garder l'abscisse
- l:=0;%pour garder l'ordonn\'ee
- m:=0;%pour garder l'altitude
- if #8>0:
- for p_=t:
- if (n mod 4)=1:
- k:=p_;
- fi;
- if (n mod 4)=2:
- l:=p_;
- fi;
- if (n mod 4)=3:
- m:=p_;
- fi;
- if (n mod 4)=0:
- % message("je suis ici : "&p_);
- M[n]=(k/#2)[A,D]+(l/#4)*(B-A)+(m/#6)*(F-A);
- N[n]=(k/#2)[A,D]+(l/#4)*(B-A);
- if (#8>1):
- label.top(TEX(p_),Projette(M[n]));
- pointe(M[n]);
- fi;
- if (#8=1) or (#8=3) :
- drawoptions(dashed evenly withcolor gris);
- draw segment(M[n],A+(0,0,bluepart(M[n])));
- draw segment(M[n],N[n]);
- draw segment(N[n],A+(l/#4)*(B-A));
- draw segment(N[n],A+(k/#2)*(D-A));
- drawoptions();
- fi;
- fi;
- n:=n+1;
- endfor;
- fi;
- enddef;
- if #9>0:
- tata(#7);
- else:
- toto(#7);
- fi;
- draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
- if \useKV[ClesReperage]{Code}:
- \useKV[ClesReperage]{Traces}
- fi;
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor CoulTrace,gris;
+ CoulTrace=(0,0,0,1);
+ gris=0.1(0,0,0,1);
+ fi;
+ typetrace:="3D";
+ typerepre:="persp";
+ Figure(-20u,-20u,20u,20u);
+ Initialisation(1500,30,20,abs(#9));
+ % marque_r:=marque_r/2;
+ marque_p:="plein";
+ color A,B,C,D,E,F,G,H,M[],N[];
+ draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
+ if #9>0:
+ drawarrow Projette(A)--Projette(1.5[D,A]);
+ drawarrow Projette(C)--Projette(1.5[D,C]);
+ drawarrow Projette(E)--Projette(1.5[D,E]);
+ label.top(btex $x$ etex,Projette(1.5[D,A]));
+ label.top(btex $y$ etex,Projette(1.5[D,C]));
+ label.top(btex $z$ etex,Projette(1.5[D,E]));
+ label.ulft(btex 1 etex,Projette((1/#2)[D,A]));
+ label.bot(btex 1 etex,Projette((1/#4)[D,C]));
+ label.lft(btex 1 etex,Projette((1/#6)[D,E]));
+ for k=1 upto (#2):
+ pointe((k/#2)[D,A]);
+ endfor;
+ for k=1 upto (#4):
+ pointe((k/#4)[D,C]);
+ endfor;
+ for k=1 upto (#6):
+ pointe((k/#6)[D,E]);
+ endfor;
+ else:
+ drawarrow Projette(D)--Projette(1.5[A,D]) dashed evenly;
+ drawarrow Projette(B)--Projette(1.5[A,B]);
+ drawarrow Projette(F)--Projette(1.5[A,F]);
+ label.lrt(btex $x$ etex,Projette(1.5[A,D]));
+ label.top(btex $y$ etex,Projette(1.5[A,B]));
+ label.top(btex $z$ etex,Projette(1.5[A,F]));
+ label.ulft(btex 1 etex,Projette((1/#2)[A,D]));
+ label.bot(btex 1 etex,Projette((1/#4)[A,B]));
+ label.lft(btex 1 etex,Projette((1/#6)[A,F]));
+ for k=1 upto (#2):
+ pointe((k/#2)[A,D]);
+ endfor;
+ for k=1 upto (#4):
+ pointe((k/#4)[A,B]);
+ endfor;
+ for k=1 upto (#6):
+ pointe((k/#6)[A,F]);
+ endfor;
+ fi;
+ vardef tata(text t)=
+ n:=1;%pour compter combien de points
+ k:=0;%pour garder l'abscisse
+ l:=0;%pour garder l'ordonn\'ee
+ m:=0;%pour garder l'altitude
+ if #8>0:
+ for p_=t:
+ if (n mod 4)=1:
+ k:=p_;
+ fi;
+ if (n mod 4)=2:
+ l:=p_;
+ fi;
+ if (n mod 4)=3:
+ m:=p_;
+ fi;
+ if (n mod 4)=0:
+ M[n]=(k/#2)[D,A]+(l/#4)*(C-D)+(m/#6)*(E-D);
+ N[n]=(k/#2)[D,A]+(l/#4)*(C-D);
+ if (#8>1):
+ label.top(TEX(p_),Projette(M[n]));
+ pointe(M[n]);
+ fi;
+ if (#8=1) or (#8=3) :
+ drawoptions(dashed evenly withcolor gris);
+ draw segment(M[n],(0,0,bluepart(M[n])));
+ draw segment(M[n],N[n]);
+ draw segment(N[n],(redpart(M[n]),0,0));
+ draw segment(N[n],(0,greenpart(M[n]),0));
+ drawoptions();
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
+ enddef;
+ vardef toto(text t)=
+ n:=1;%pour compter combien de points
+ k:=0;%pour garder l'abscisse
+ l:=0;%pour garder l'ordonn\'ee
+ m:=0;%pour garder l'altitude
+ if #8>0:
+ for p_=t:
+ if (n mod 4)=1:
+ k:=p_;
+ fi;
+ if (n mod 4)=2:
+ l:=p_;
+ fi;
+ if (n mod 4)=3:
+ m:=p_;
+ fi;
+ if (n mod 4)=0:
+ % message("je suis ici : "&p_);
+ M[n]=(k/#2)[A,D]+(l/#4)*(B-A)+(m/#6)*(F-A);
+ N[n]=(k/#2)[A,D]+(l/#4)*(B-A);
+ if (#8>1):
+ label.top(TEX(p_),Projette(M[n]));
+ pointe(M[n]);
+ fi;
+ if (#8=1) or (#8=3) :
+ drawoptions(dashed evenly withcolor gris);
+ draw segment(M[n],A+(0,0,bluepart(M[n])));
+ draw segment(M[n],N[n]);
+ draw segment(N[n],A+(l/#4)*(B-A));
+ draw segment(N[n],A+(k/#2)*(D-A));
+ drawoptions();
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
+ enddef;
+ if #9>0:
+ tata(#7);
+ else:
+ toto(#7);
+ fi;
+ draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
+ if \useKV[ClesReperage]{Code}:
+ \useKV[ClesReperage]{Traces}
+ fi;
\end{mplibcode}
\else
\begin{mpost}[mpsettings={input PfCGeometrie;}]
@@ -719,6 +738,7 @@
% #5 : liste des points pour les string
\ifluatex
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
boolean Tiret,Code,AffichageGrad,Cadre;
Tiret=\useKV[ClesReperage]{Tiret};
Code=\useKV[ClesReperage]{Code};
@@ -1236,6 +1256,7 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -1251,6 +1272,13 @@
AffichageUnites=\useKV[ClesReperage]{AffichageUnites};
MarquePrimaire=\useKV[ClesReperage]{MarquePrimaire};
Decale=\useKV[ClesReperage]{Decale};
+ if defaultcolormodel=7:
+ cmykcolor CouleurCroix;
+ else:
+ color CouleurCroix;
+ fi;
+ CouleurCroix=\useKV[ClesReperage]{CouleurCroix};
+ EchelleCroix=\useKV[ClesReperage]{EchelleCroix};
numeric valeur[];
vardef titi(text t)=
n:=0;
@@ -1321,7 +1349,7 @@
endfor;
fi;
% marquage des points
- m_c:=m_c*3;
+ m_c:=m_c*3/EchelleCroix;
marque_p:="croix";
labeloffset:=labeloffset*3;
if AffichageUnites:
@@ -1346,7 +1374,9 @@
label.top(TEX(p_),unitp*(valeur[n],0));
fi;
if p_<>"":
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
endfor;
fi;
@@ -1358,7 +1388,9 @@
if substring(1,2) of p_="*":
ACoord:=scantokens(substring(0,1) of p_);
if ACoord=4:
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=3:
if Decale:
drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm);
@@ -1379,17 +1411,23 @@
fi;
fi;
labeloffset:=Labeloffset;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=2:
if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurOrigine*pasx)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
else:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=1:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
else:
if AffichageCoord=4:
@@ -1415,7 +1453,9 @@
fi;
fi;
labeloffset:=Labeloffset;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
elseif AffichageCoord=2:
if p_<>"":
@@ -1424,12 +1464,16 @@
else:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
- pointe(unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
elseif AffichageCoord=1:
if p_<>"":
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
- pointe(unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
fi;
fi;
@@ -1599,6 +1643,7 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -1973,6 +2018,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -2159,6 +2205,11 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor white;
+ white=(0,0,0,1);
+ fi;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
pasx:=10;
unitp:=unitex/pasx;