diff options
author | Karl Berry <karl@freefriends.org> | 2023-04-15 20:49:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-04-15 20:49:32 +0000 |
commit | 79935d2b00a2ab825d106d08f997fc4b62ea11dc (patch) | |
tree | 48269e6163f705ffcf4f2bfece9be8bfce8345a8 /Master/texmf-dist/metapost/profcollege | |
parent | 880c315ac7515f87b23225533220d6d5692380b6 (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.mp | 2 | ||||
-rw-r--r-- | Master/texmf-dist/metapost/profcollege/PfCObjets.mp | 285 | ||||
-rw-r--r-- | Master/texmf-dist/metapost/profcollege/PfCSolid.mp | 27 |
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 |