diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCReperage.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCReperage.tex | 321 |
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; |