summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/metapost
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-07-07 03:01:45 +0000
committerNorbert Preining <norbert@preining.info>2022-07-07 03:01:45 +0000
commitc925207bc17a56bf94a6e3d156db27042965136d (patch)
treeb5dc80f7f6791eba6121e1a44c1c2b9a4b46dbb2 /macros/latex/contrib/profcollege/metapost
parent9f9a07ef2eb0c1f25ce9afc7bb94928956c036ea (diff)
CTAN sync 202207070301
Diffstat (limited to 'macros/latex/contrib/profcollege/metapost')
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp236
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCScratch.mp2
2 files changed, 237 insertions, 1 deletions
diff --git a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
index 3386a78680..02a3f66ce2 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
@@ -1276,4 +1276,240 @@ vardef Tetraedrer(text t)=
tetrar
enddef;
+%Outils
+numeric echelleequerre;
+echelleequerre=2;
+vardef equerre(expr dte,drte,perpe,sens)=
+ save picequerre;
+ picture picequerre;
+ pair ww,t[];
+ path intermede;
+ pair perpen,ptt,pttt;
+ perpen:=projection(perpe,dte,drte);
+ %if sens=1 :
+ ptt:=longueurequerre*(drte-dte) rotated 90 shifted perpen;
+ %else :
+% ptt:=longueurequerre*(drte-dte) rotated (-90) shifted perpen;
+ %fi;
+ ww=unitvector(drte-dte);
+ intermede=ptt--(10[ptt,(perpen rotatedabout(ptt,if sens=1: 30 else:-30 fi))]);
+ pttt=intermede intersectionpoint (10[dte,drte]--10[drte,dte]);
+ picequerre=image(
+ draw perpen--ptt--pttt--cycle;
+ draw codeperp(ptt,perpen,pttt,5);
+ );
+ picequerre
+enddef;
+
+ vardef regle(expr depart,arrivee,rr)=
+ save picregle;
+ picture picregle,grad[],gradu[],final;
+ pair t[];
+ path reduit;
+ t1000=depart shifted (5*unitvector(depart-arrivee));
+ t1003=arrivee shifted (20*unitvector(arrivee-depart));
+ t1004=(unitvector(arrivee-depart) rotated (-90)) shifted t1000;
+ t1001=t1000 shifted (50*(t1004-t1000));
+ t1002=t1001 shifted (t1003-t1000);
+ reduit=t1000--t1001--t1002..(t1002 shifted(5*unitvector(t1001-t1002)+1/4(t1003-t1002)))..(t1002 shifted(5*unitvector(t1002-t1001)+2/4(t1003-t1002)))..(t1002 shifted(5*unitvector(t1001-t1002)+3/4(t1003-t1002)))..t1003--cycle;
+ gradu1=image(
+ for k=0 upto 59:
+ for j=1 upto 4:
+ t[5*k+j]=depart shifted (1mm*(5*k+j)*unitvector(arrivee-depart));
+ t[400+5*k+j]=t[5*k+j] shifted (2*(t1004-t1000));
+ draw t[5*k+j]--t[400+5*k+j];
+ endfor;
+ endfor
+ );
+ gradu2=image(
+ for k=0 upto 29:
+ t[5*(2*k+1)]=depart shifted (1mm*5*(2*k+1)*unitvector(arrivee-depart));
+ t[400+5*(2*k+1)]=t[5*(2*k+1)] shifted (5*(t1004-t1000));
+ draw t[5*(2*k+1)]--t[400+5*(2*k+1)];
+ endfor
+ );
+ gradu3=image(
+ for k=0 upto 30:
+ t[10*k]=depart shifted(1mm*10*k*unitvector(arrivee-depart));
+ t[400+10*k]=t[10*k] shifted (10*(t1004-t1000));
+ draw t[10*k]--t[400+10*k];
+ endfor
+ );
+ for j=0 upto 30:
+ grad[j]=image(
+ label.bot(TEX(""&decimal(j)&""),t[400+10*j]);
+ %affixe[j](t[400+10*j])s;
+ currentpicture:=currentpicture rotatedabout(t[400+10*j],90+angle(t[400+10*j]-t[10*j]));
+ );
+ endfor
+ final=image(
+ for k=0 upto 30:
+ draw grad[k];
+ endfor
+ for k=1 upto 3:
+ draw gradu[k];
+ endfor
+ clip currentpicture to reduit;
+ draw reduit;
+ );
+ if rr=-1:
+ picregle=image(
+ draw final rotatedabout(1/2[depart,arrivee],180);
+ );
+ else:
+ picregle=image(
+ draw final;
+ );
+ fi
+ picregle
+enddef;
+
+vardef crayon(expr depart,arrive,ptplace,nbechelle)=
+ save piccray;
+ picture piccray,crayolat;
+ pair w[];
+ w0=(0,0);
+ w1=(1,2)*u/2;
+ w2=(-1,2)*u/2;
+ w3=(0,2)*u/2;
+ w4=(0,7)*u/2;
+ path ccc,ccd;
+ ccc=cercles(w0,abs(w3-w2));
+ ccd=ccc yscaled 0.25 shifted w3;
+ crayolat=image(
+ draw subpath((length ccd)/2,length ccd) of ccd;
+ draw ccd shifted (w4-w3);
+ draw w2--w0--w1;
+ draw w1--((1,7)*u/2);
+ draw w2--((-1,7)*u/2);
+ );
+ crayolat:=crayolat scaled nbechelle;
+ piccray=(crayolat rotated(angle(arrive-depart)-30)) shifted ptplace;
+ piccray
+enddef;
+
+boolean Simple;
+Simple=false;
+
+vardef rapporteur(expr centre,segment,rr)=
+ save raps;
+ picture raps;
+ raps=image(
+ Simple:=true;
+ trace rapporteurdouble(centre,segment,rr);
+ Simple:=false;
+ );
+ raps
+enddef;
+
+vardef rapporteurdouble(expr centre,segment,rr)=
+ save rap,cc,cd,v,w,t,ww,vv;
+ picture rap;
+ path cc,cd;
+ pair a[],b[],v,w,t,ww,vv,rap[],rapp[];
+ cc=cercle(centre,0.75*abs(centre-segment));
+ t=cc intersectionpoint (centre--segment);
+ w=t-2*unitvector(segment-centre);v=symetrie(w,t);
+ ww=t-5*unitvector(segment-centre);vv=symetrie(ww,t);
+ a0=(ww-centre) shifted centre;
+ b0=(vv-centre) shifted centre;
+ for i=0 upto 35 :
+ for j=1 upto 4 :
+ a[5*i+j]=(w-centre) rotated (rr*(5*i+j)) shifted centre;
+ b[5*i+j]=(v-centre) rotated (rr*(5*i+j)) shifted centre;
+ endfor;
+ a[5*(i+1)]=(ww-centre) rotated (rr*(5*(i+1))) shifted centre;
+ b[5*(i+1)]=(vv-centre) rotated (rr*(5*(i+1))) shifted centre;
+ endfor
+ picture nomb[],nombre[];
+ if rr=1:
+ for j=0 upto 18:
+ nombre[10*j]=image(
+ label.bot(TEX("\fontsize{4}{4}\selectfont"&decimal(10*j)&""),a[10*j]);
+ currentpicture:=currentpicture rotatedabout(a[10*j],angle(a[10*j]-centre)-90);
+ );
+ endfor
+ for j=0 upto 18:
+ nombre[10*j+1]=image(
+ % affixe.[180-10*j](b[10*j])n;
+ label.top(TEX("\fontsize{4}{4}\selectfont"&decimal(180-10*j)&""),b[10*j]);
+ currentpicture:=currentpicture rotatedabout(b[10*j],angle(b[10*j]-centre)-90);
+ );
+ endfor
+ else:
+ for j=0 upto 18:
+ nombre[10*j]=image(
+ label.bot(TEX("\fontsize{4}{4}\selectfont"&decimal(180-10*j)&""),a[10*j]);
+ currentpicture:=currentpicture rotatedabout(a[10*j],angle(a[10*j]-centre)-90);
+ );
+ endfor
+ for j=18 downto 0:
+ nombre[10*j+1]=image(
+ % affixe.[10*j](b[10*j])n;
+ label.top(TEX("\fontsize{4}{4}\selectfont"&decimal(10*j)&""),b[10*j]);
+ currentpicture:=currentpicture rotatedabout(b[10*j],angle(b[10*j]-centre)-90);
+ );
+ endfor
+ fi
+ rap=image(
+ for i=0 upto 18 :
+ draw nombre[10*i+1];
+ if Simple=false:
+ draw nombre[10*i];
+ fi;
+ endfor;
+ path cerc;
+ cerc=subpath((angle(segment-centre)*(length cc))/360,((length cc)/2)+(angle(segment-centre)*(length cc))/360) of cc;
+ if rr=-1:
+ draw cerc reflectedabout(segment,centre);
+ else:
+ draw cerc;
+ fi
+ draw a0--b0 withpen pencircle scaled 1.25bp;
+ for i=0 upto 35 :
+ for j=1 upto 4 :
+ draw a[5*i+j]--b[5*i+j];
+ endfor;
+ endfor;
+ for i=1 step 2 until 35:
+ draw a[5*i]--b[5*i];
+ endfor;
+ for i=1 upto 18:
+ draw a[10*i]--b[10i] withpen pencircle scaled 1.25;
+ endfor;
+ draw a0--a180;
+ path cent;
+ cent=cercle(centre,0.05*u);
+ fill cent withcolor if unknown fillrap: 0.9white else: fillrap fi;
+ );
+ rap
+enddef;
+
+vardef compas(expr centre,extre,n)=
+ save piccompas;
+ picture piccompas;
+ pair r,s,t,a,b,c,d,e,f;
+ if (abs(centre-extre)<10*u):
+ r=((extre-1/2[centre,extre]) rotated (n*90)) shifted (1/2[centre,extre]);
+ else:
+ r=0.25[1/2[centre,extre],((extre-1/2[centre,extre]) rotated (n*90)) shifted (1/2[centre,extre])];
+ fi
+ s=(1+50/abs(centre-extre))[1/2[centre,extre],r];
+ t=10*unitvector(extre-centre) rotated (n*90);
+ a=centre shifted t;
+ b=s shifted (5*unitvector(centre-extre)+10*unitvector(s-r));
+ c=b shifted (30*unitvector(s-r));
+ d=c reflectedabout(r,s);
+ e=b reflectedabout(r,s);
+ f=a reflectedabout(r,s);
+ path comp;
+ comp=a--b--c--d--e--f--s--a--cycle;
+ piccompas=image(
+ fill comp withcolor black;
+ draw centre--a withpen pencircle scaled 1.5bp;
+ draw f--extre withpen pencircle scaled 1.5bp withcolor 0.25[red,blue];
+ );
+ piccompas
+enddef;
+
endinput;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
index c3a41e3eb4..d8b2a0a851 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
@@ -122,7 +122,7 @@ vardef OvalVar(expr ar)=
save Ovar; picture Ovar;
save TAvar; path TAvar;
string TTv;
- TTv=ar&"\barre";
+ TTv="\barre\bfseries "&ar;%
TAvar=OvalBox(TTv);
Ovar=image(
fill TAvar if print=false : withcolor OrangeTrois else : withcolor white fi;