summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/metapost/profcollege
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-04-15 20:49:32 +0000
committerKarl Berry <karl@freefriends.org>2023-04-15 20:49:32 +0000
commit79935d2b00a2ab825d106d08f997fc4b62ea11dc (patch)
tree48269e6163f705ffcf4f2bfece9be8bfce8345a8 /Master/texmf-dist/metapost/profcollege
parent880c315ac7515f87b23225533220d6d5692380b6 (diff)
profcollege (15apr23)
git-svn-id: svn://tug.org/texlive/trunk@66856 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost/profcollege')
-rw-r--r--Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp2
-rw-r--r--Master/texmf-dist/metapost/profcollege/PfCObjets.mp285
-rw-r--r--Master/texmf-dist/metapost/profcollege/PfCSolid.mp27
3 files changed, 305 insertions, 9 deletions
diff --git a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
index dd49ba8c3b3..e19152c695d 100644
--- a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
+++ b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
@@ -1559,7 +1559,7 @@ vardef axes=
axx=image(
drawarrow (x.so*cm,y.origine)--(x.ne*cm,y.origine);
drawarrow (x.origine,y.so*cm)--(x.origine,y.ne*cm);
- label.llft(btex $O$ etex,z.origine);
+ label.llft(LATEX($O$),z.origine);
);
axx
enddef;
diff --git a/Master/texmf-dist/metapost/profcollege/PfCObjets.mp b/Master/texmf-dist/metapost/profcollege/PfCObjets.mp
index 964cfedd8a1..3d6571c8088 100644
--- a/Master/texmf-dist/metapost/profcollege/PfCObjets.mp
+++ b/Master/texmf-dist/metapost/profcollege/PfCObjets.mp
@@ -42,6 +42,120 @@ Transparence:=false;
boolean couleurz;%pour gérer l'affichage "des lignes" de niveaux
couleurz:=false;
+vardef AffichagePfC[]=
+ save _affi;
+ picture _affi;
+ color Fc[][];color cou[];
+ tapj:=0;
+ for k=0 upto apj.@:
+ cpt[tapj]:=tapj;
+ Fc[tapj].nb:=OTFc.@[k].nb;
+ for l=1 upto Fc[tapj].nb:
+ Fc[tapj][l]:=OTFc.@[k][l];
+ endfor;
+ Fc[tapj].iso:=OTFc.@[k].iso;
+ ALT[tapj]:=ALT.@[k];
+ Vue[tapj]:=Vue.@[k];
+ tapj:=tapj+1;
+ endfor;
+ tapj:=tapj-1;
+ QS(0,tapj);
+ %if Transparence :
+ for k=0 upto tapj:
+ if Vue[cpt[k]]=false:
+% fill for l=1 upto Fc[cpt[k]].nb:
+% Projette(Fc[cpt[k]][l])--
+% endfor
+% cycle withcolor abs(lumin(cpt[k]))*cou[cpt[k]];
+% if traits=true:
+ draw Projette(Fc[cpt[k]][1]) for l=2 upto Fc[cpt[k]].nb-1:
+ --Projette(Fc[cpt[k]][l])
+ endfor
+ dashed evenly withpen pencircle scaled0.25 withcolor 0.7white;
+% fi;
+ fi;
+ endfor;
+ for k=0 upto tapj:
+ if Vue[cpt[k]]:
+% transparence for l=1 upto Fc[cpt[k]].nb:
+% Projette(Fc[cpt[k]][l])--
+% endfor
+% cycle;
+% if traits=true:
+ draw for l=1 upto Fc[cpt[k]].nb:
+ Projette(Fc[cpt[k]][l])--
+ endfor
+ cycle withpen pencircle scaled0.5 withcolor 0.25white;
+% fi;
+ fi;
+ endfor;
+enddef;
+
+vardef AffichageEquateur[]=
+ save _affi;
+ picture _affi;
+ color Fc[][];color cou[];
+ tapj:=0;
+ for k=0 upto apj.@:
+ cpt[tapj]:=tapj;
+ Fc[tapj].nb:=OTFc.@[k].nb;
+ for l=1 upto Fc[tapj].nb:
+ Fc[tapj][l]:=OTFc.@[k][l];
+ endfor;
+ Fc[tapj].iso:=OTFc.@[k].iso;
+ ALT[tapj]:=ALT.@[k];
+ Vue[tapj]:=Vue.@[k];
+ tapj:=tapj+1;
+ endfor;
+ tapj:=tapj-1;
+ QS(0,tapj);
+ for k=0 upto tapj:
+ % if Vue[cpt[k]]=false:
+ draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][4])
+ if Vue[cpt[k]]=false:
+ dashed evenly;
+ fi;
+% endfor;
+% for k=0 upto tapj:
+% if Vue[cpt[k]]:
+% else:
+% draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][4]);
+% fi;
+ endfor;
+ drawoptions();
+enddef;
+
+vardef AffichageGreenwich[]=
+ save _affi;
+ picture _affi;
+ color Fc[][];color cou[];
+ tapj:=0;
+ for k=0 upto apj.@:
+ cpt[tapj]:=tapj;
+ Fc[tapj].nb:=OTFc.@[k].nb;
+ for l=1 upto Fc[tapj].nb:
+ Fc[tapj][l]:=OTFc.@[k][l];
+ endfor;
+ Fc[tapj].iso:=OTFc.@[k].iso;
+ ALT[tapj]:=ALT.@[k];
+ Vue[tapj]:=Vue.@[k];
+ tapj:=tapj+1;
+ endfor;
+ tapj:=tapj-1;
+ QS(0,tapj);
+ for k=0 upto tapj:
+ draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2])
+ if Vue[cpt[k]]=false:
+ dashed evenly;
+ fi;% withpen pencircle scaled0.75;
+ endfor;
+% for k=0 upto tapj:
+% if Vue[cpt[k]]:
+% draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]);
+% fi;
+% endfor;
+enddef;
+
vardef AffichageObjet[]=
save _affi;
picture _affi;
@@ -668,6 +782,177 @@ vardef ObjetSphereNew[](expr Rn)=
apj.@:=apj-1;
enddef;
+vardef ObjetSpherePfC[](expr Rn)=
+% subh:=12;
+% NewOeil:=(0,0,0);
+ Outcolor.@:=outcolor;
+ Incolor.@:=incolor;
+ if creux:Ferme.@:=false else: Ferme.@:=true fi;
+ scantokens("numeric "&substring(0,1) of Rn&"; "&Rn&";");
+ vardef Famille(expr u,v)=(R*(cos(u)*cos(v),cos(u)*sin(v),sin(u))) enddef;
+ umin:=-pi/2; upas:=pi/nb;% umax:=0;
+ vmin:=-pi; vpas:=2*pi/subh;% vmax:=2*pi;
+ apj:=0;
+ %On crée les facettes et on calcule la profondeur en Z.
+ for k=0 upto nb-1:
+ for l=0 upto (subh-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=Image(Famille(umin+(k+1)*upas,vmin+l*vpas));%1
+ OTFc.@[apj][2]:=Image(Famille(umin+k*upas,vmin+l*vpas));%2
+ OTFc.@[apj][3]:=Image(Famille(umin+k*upas,vmin+(l+1)*vpas));%3
+ OTFc.@[apj][4]:=Image(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));%4
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=Zpart(GCoord(OTFc.@[apj].iso));
+ if ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))<0:%OTFc.@[apj][1]
+ Vue.@[apj]:=false;coul.@[apj]:=outcolor;
+ else:
+ Vue.@[apj]:=true;coul.@[apj]:=incolor;
+% drawarrow Projette(OTFc.@[apj].iso)--Projette(OTFc.@[apj].iso+Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]));
+% drawarrow Projette(OTFc.@[apj].iso)--Projette(NewOeil-OTFc.@[apj].iso);
+ fi;
+ apj:=apj+1;
+ endfor;
+ endfor;
+ apj.@:=apj-1;
+enddef;
+
+vardef ObjetSphereCabinet[](expr Rn)=
+% Oeil:=(0,0,0);
+% subh:=subh;
+ % nb:=8;
+ Outcolor.@:=outcolor;
+ Incolor.@:=incolor;
+ if creux:Ferme.@:=false else: Ferme.@:=true fi;
+ scantokens("numeric "&substring(0,1) of Rn&"; "&Rn&";");
+ vardef Famille(expr u,v)=(R*(cosd(u)*cosd(v),cosd(u)*sind(v),sind(u))) enddef;
+ umin:=-90; upas:=180/nb;% umax:=0;
+ vmin:=-180; vpas:=360/subh;% vmax:=2*pi;
+ apj:=0;
+ %On crée les facettes et on calcule la profondeur en Z.
+ for k=0 upto nb-1:%nb-1:
+ for l=0 upto (subh-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=(Famille(umin+(k+1)*upas,vmin+l*vpas));%1
+ OTFc.@[apj][2]:=(Famille(umin+k*upas,vmin+l*vpas));%2
+ OTFc.@[apj][3]:=(Famille(umin+k*upas,vmin+(l+1)*vpas));%3
+ OTFc.@[apj][4]:=(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));%4
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=-Zpart(GCoord(OTFc.@[apj].iso));
+ PfCPS:=ProduitScalaire(Oeil-OTFc.@[apj][1],Normal(OTFc.@[apj][1],OTFc.@[apj][2],OTFc.@[apj][3]))/1000;
+% PfCPS:=ProduitScalaire(Oeil,-OTFc.@[apj].iso)/1000;
+ if PfCPS<0:%ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))<0:%OTFc.@[apj][1]
+ Vue.@[apj]:=false;coul.@[apj]:=incolor;
+ %label(TEX("visible"&decimal(floor(0.01*ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj][1],OTFc.@[apj][2],OTFc.@[apj][3]))))),(0,0)+5mm*(0,-apj));
+% dotlabel.llft(decimal(1),Projette(OTFc.@[apj][1]));
+% dotlabel.llft(decimal(2),Projette(OTFc.@[apj][2]));
+% dotlabel.llft(decimal(4),Projette(OTFc.@[apj][4]));
+% drawarrow Projette(OTFc.@[apj][1])--Projette(OTFc.@[apj][1]+Normal(OTFc.@[apj][1],OTFc.@[apj][2],OTFc.@[apj][3]));
+% drawarrow Projette(OTFc.@[apj][1])--Projette(Oeil+OTFc.@[apj][1]);
+% label.rt(decimal(PfCPS)&"/Oeil-P1",Projette(OTFc.@[apj][1]+Normal(OTFc.@[apj][1],OTFc.@[apj][2],OTFc.@[apj][3])));
+ apj:=apj+1;
+ else:%if PfCPS>0:
+ Vue.@[apj]:=true;coul.@[apj]:=outcolor;
+% dotlabel.llft(decimal(1),Projette(OTFc.@[apj][1]));
+% dotlabel.llft(decimal(2),Projette(OTFc.@[apj][2]));
+% dotlabel.llft(decimal(3),Projette(OTFc.@[apj][3]));
+% dotlabel.llft(decimal(4),Projette(OTFc.@[apj][4]));
+% drawarrow Projette(OTFc.@[apj][1])--Projette(OTFc.@[apj][1]+Normal(OTFc.@[apj][1],OTFc.@[apj][2],OTFc.@[apj][3]));
+% drawarrow Projette(OTFc.@[apj][1])--Projette(Oeil+OTFc.@[apj][1]);
+% label(TEX(decimal(floor(ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))))),Projette(OTFc.@[apj].iso));
+% drawarrow Projette(OTFc.@[apj].1)--Projette(OTFc.@[apj].iso+Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]));
+% drawarrow Projette(OTFc.@[apj].iso)--Projette(NewOeil-OTFc.@[apj].iso);
+ apj:=apj+1;
+ fi;
+ endfor;
+ endfor;
+ apj.@:=apj-1;
+enddef;
+
+vardef ObjetEquateur[](expr Rn)=
+ Outcolor.@:=outcolor;
+ Incolor.@:=incolor;
+ if creux:Ferme.@:=false else: Ferme.@:=true fi;
+ scantokens("numeric "&substring(0,1) of Rn&"; "&Rn&";");
+ vardef Famille(expr u,v)=(R*(cos(u)*cos(v),cos(u)*sin(v),sin(u))) enddef;
+% umin:=-pi/2; upas:=pi/nb; umax:=pi/2;
+ umin:=-pi/nb; upas:=pi/nb; umax:=0;
+ vmin:=-pi; vpas:=2*pi/subh; vmax:=-pi+vpas;
+ apj:=0;
+ %On crée les facettes et on calcule la profondeur en Z.
+ for k=0 upto 0:%(nb-1):
+ for l=0 upto (subh-1):%(subh-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=Image(Famille(umin+(k+1)*upas,vmin+l*vpas));
+ OTFc.@[apj][2]:=Image(Famille(umin+k*upas,vmin+l*vpas));
+ OTFc.@[apj][3]:=Image(Famille(umin+k*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj][4]:=Image(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=-Zpart(GCoord(OTFc.@[apj].iso));
+ if ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))>=0:
+ Vue.@[apj]:=true;coul.@[apj]:=outcolor;
+ else:
+ Vue.@[apj]:=false;coul.@[apj]:=incolor;
+ fi;
+ apj:=apj+1;
+ endfor;
+ endfor;
+ apj.@:=apj-1;
+enddef;
+
+vardef ObjetGreenwich[](expr Rn)=
+ Outcolor.@:=outcolor;
+ Incolor.@:=incolor;
+ if creux:Ferme.@:=false else: Ferme.@:=true fi;
+ scantokens("numeric "&substring(0,1) of Rn&"; "&Rn&";");
+ vardef Famille(expr u,v)=(R*(cos(u)*cos(v),cos(u)*sin(v),sin(u))) enddef;
+ umin:=-pi/2; upas:=pi/nb; umax:=pi;
+ vmin:=0; vpas:=2*pi/subh; vmax:=2*pi;
+ apj:=0;
+ %On crée les facettes et on calcule la profondeur en Z.
+ for l=0 upto 0:%(subh-1):
+ for k=0 upto nb-1:%(nb-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=Image(Famille(umin+(k+1)*upas,vmin+l*vpas));
+ OTFc.@[apj][2]:=Image(Famille(umin+k*upas,vmin+l*vpas));
+ OTFc.@[apj][3]:=Image(Famille(umin+k*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj][4]:=Image(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=-Zpart(GCoord(OTFc.@[apj].iso));
+ if ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))>=0:
+ Vue.@[apj]:=true;coul.@[apj]:=outcolor;
+ else:
+ Vue.@[apj]:=false;coul.@[apj]:=incolor;
+ fi;
+ apj:=apj+1;
+ endfor;
+ endfor;
+ umin:=-pi/2; upas:=pi/nb; umax:=pi;
+ vmin:=pi; vpas:=2*pi/subh; vmax:=2*pi;
+ for l=0 upto 0:
+ for k=0 upto nb-1:%(nb-1):
+ tcpt.@[apj]:=apj;
+ OTFc.@[apj].nb:=4;
+ OTFc.@[apj][1]:=Image(Famille(umin+(k+1)*upas,vmin+l*vpas));
+ OTFc.@[apj][2]:=Image(Famille(umin+k*upas,vmin+l*vpas));
+ OTFc.@[apj][3]:=Image(Famille(umin+k*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj][4]:=Image(Famille(umin+(k+1)*upas,vmin+(l+1)*vpas));
+ OTFc.@[apj].iso:=(OTFc.@[apj][1]+OTFc.@[apj][2]+OTFc.@[apj][3]+OTFc.@[apj][4])/4;
+ ALT.@[apj]:=-Zpart(GCoord(OTFc.@[apj].iso));
+ if ProduitScalaire(Oeil-OTFc.@[apj].iso,Normal(OTFc.@[apj].iso,OTFc.@[apj][1],OTFc.@[apj][2]))>=0:
+ Vue.@[apj]:=true;coul.@[apj]:=outcolor;
+ else:
+ Vue.@[apj]:=false;coul.@[apj]:=incolor;
+ fi;
+ apj:=apj+1;
+ endfor;
+ endfor;
+ apj.@:=apj-1;
+enddef;
+
vardef Objetcalotte[](expr Rn,Phib,Phih)=
Outcolor.@:=outcolor;
Incolor.@:=incolor;
diff --git a/Master/texmf-dist/metapost/profcollege/PfCSolid.mp b/Master/texmf-dist/metapost/profcollege/PfCSolid.mp
index 342b9921676..bc4b9517eed 100644
--- a/Master/texmf-dist/metapost/profcollege/PfCSolid.mp
+++ b/Master/texmf-dist/metapost/profcollege/PfCSolid.mp
@@ -54,12 +54,18 @@ vardef Initialisation(expr r,t,p,d)=
Aux6:=Aux1*Aux2;
Aux7:=Aux3*Aux4;
Aux8:=Aux1*Aux4;
+ color Oeil;
+% if typerepre="cabinet":
+% Oeil=(Rho,0,0);
+% else:
+ Oeil=(Aux7,Aux8,Aux2)*Rho;
+% fi;
pointilles:="oui";
Lumiere:=Oeil;
enddef;
-vardef Oeil=(Rho*Aux7,Rho*Aux8,Rho*Aux2)
-enddef;
+%vardef Oeil=(Rho*Aux7,Rho*Aux8,Rho*Aux2)
+%enddef;
vardef sin(expr t) = sind(c*t) enddef;
@@ -104,11 +110,17 @@ enddef;
unit:=1;%pour les mises à l'échelle :) Merci pst-solides3d
vardef Projette(expr M)=
- %if typerepre="proj":
- % unit*(DE*(Xpart(GCoord(M)/Zpart(GCoord(M))),(Ypart(GCoord(M))/Zpart(GCoord(M)))))
- %elseif typerepre="persp":
- unit*(DE*(Xpart(GCoord(M)),Ypart(GCoord(M))))
- %fi
+ if typerepre="proj":
+ ((Xpart(GCoord(M)),Ypart(GCoord(M)))/Zpart(GCoord(M)))*DE*10%
+ elseif typerepre="persp":
+ (Xpart(GCoord(M)),Ypart(GCoord(M)))*unit*DE
+ elseif typerepre="cabinet":
+% (0.5*cosd(30)*Xpart(GCoord(M)),0.75*sind(30)*Ypart(GCoord(M)))*unit*DE
+ (Xpart(GCoord(M))+0.5*cosd(30)*Zpart(GCoord(M)),Ypart(GCoord(M))+0.5*sind(30)*Zpart(GCoord(M)))*20
+% (0.5*cosd(45)*Xpart(GCoord(M)),0.5*sind(45)*Ypart(GCoord(M)))*unit*DE
+% (Xpart(GCoord(M)),Ypart(GCoord(M)))*unit*DE
+ %(Xpart(GCoord(M)),Ypart(GCoord(M)))*10
+ fi
enddef;
vardef TraceAxes=
@@ -181,7 +193,6 @@ vardef Normal(expr vecun,vecde,vectr)=
enddef;
vardef ProduitScalaire(expr wec,mor)=
- %Mexp(Mlog redpart(wec) Mmul Mlog redpart(mor))+Mexp(Mlog greenpart(wec) Mmul Mlog greenpart(mor))+Mexp(Mlog bluepart(wec) Mmul Mlog bluepart(mor))
Xpart(wec)*Xpart(mor)+Ypart(wec)*Ypart(mor)+Zpart(wec)*Zpart(mor)
enddef;
%pour les rotations et translations