diff options
author | Karl Berry <karl@freefriends.org> | 2021-11-08 23:18:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-11-08 23:18:25 +0000 |
commit | ca1660fd2373f74ea7901e5170dffd72b5a784f4 (patch) | |
tree | 9190bb006c14918ce1056276050562e58961e9e7 /Master/texmf-dist/metapost/profcollege | |
parent | 87b3a936763b34a0b1a91c081cc739a2067192bc (diff) |
profcollege (9nov21)
git-svn-id: svn://tug.org/texlive/trunk@60999 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost/profcollege')
-rw-r--r-- | Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp | 14 | ||||
-rw-r--r-- | Master/texmf-dist/metapost/profcollege/PfCMonde.mp | 1549 |
2 files changed, 1563 insertions, 0 deletions
diff --git a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp index 2e3cc54dd26..604373e7164 100644 --- a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp +++ b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp @@ -124,6 +124,20 @@ vardef milieu(expr AA,BB)= $ enddef; +vardef CentreCercleC(expr a, b ,c) = + save o; pair o; + o - .5[a,b] = whatever * (b-a) rotated 90; + o - .5[b,c] = whatever * (c-b) rotated 90; + o +enddef; + +vardef Orthocentre(expr a, b, c) = + save h; pair h; + h - a = whatever * (c-b) rotated 90; + h - b = whatever * (a-c) rotated 90; + h +enddef; + vardef CentreCercleI(expr aa,bb,cc)= save $,a,c; pair $; diff --git a/Master/texmf-dist/metapost/profcollege/PfCMonde.mp b/Master/texmf-dist/metapost/profcollege/PfCMonde.mp new file mode 100644 index 00000000000..10906952dac --- /dev/null +++ b/Master/texmf-dist/metapost/profcollege/PfCMonde.mp @@ -0,0 +1,1549 @@ +%Package mp-geographie +%Auteur:Christophe Poulain +%Version 0.62 +%16/02/2010 + +input marith; +input sarith; +%input LATEX; + +pi:=3.141592654; +c:=57.29578; % conversion d'un radian en degrés + +color _T[],rouge,vert,bleu,jaune,noir,blanc,orange,rose,violet,ciel,cielfonce,orangevif,gris,tan,payscolor; + +rouge=(1,0,0); +bleu=(0,0,1); +noir=(0,0,0); +blanc=(1,1,1); +orange=(1,0.5,0); +violet=(1,0,1); +rose=(1,0.7,0.7); +cielfonce=(0.25,0.75,1); +ciel=(0,1,1); +orangevif=(1,0.25,0.1); +vert=(0,1,0); +jaune=(1,1,0); +gris=0.8*white; + +tan=(0.824,0.705,0.55); +payscolor=tan; + +vardef flamme=reverse(2mm*(0.5,1){dir90}..2mm*(0.75,1.5)..{dir90}2mm*(1,2))--2mm*(0.5,1){dir=-90}..2mm*(1,0.5)..{dir=90}2mm*(1.5,1)--((2mm*(0.5,1){dir90}..2mm*(0.75,1.5)..{dir90}2mm*(1,2)) reflectedabout (2mm*(1,0),2mm*(1,0)+2mm*(0,1)))--cycle +enddef; + +%Les marques + +string marque_p; +marque_p := "non"; +marque_r := 20; + +def MarquePoint(expr p)= + if marque_p = "creux": + if color p: + fill fullcircle scaled (marque_r/5) shifted (Projgeo(p)) withcolor white; + draw fullcircle scaled (marque_r/5) shifted (Projgeo(p)); + else: + fill fullcircle scaled (marque_r/5) shifted (p) withcolor white; + draw fullcircle scaled (marque_r/5) shifted (p); + fi; + fi; +enddef; + +vardef pointe(text t) = + for p_ = t: if (pair p_) or (color p_): MarquePoint(p_); fi endfor; +enddef; + +%Définition pour la feuille + +path feuillet; +numeric _tfig,_nfig; +_nfig:=0; +u:=1cm; + +def feuille(expr xa,ya,xb,yb) = + numeric Xa,Ya; + Xa=xa; + Ya=ya; + feuillet := (xa,ya)--(xa,yb)--(xb,yb)--(xb,ya)--cycle; + extra_endfig := "clip currentpicture to feuillet;" & extra_endfig; +enddef; + +def figureespace(expr xa,ya,xb,yb) = + _nfig:=_nfig+1; + beginfig(_nfig); + feuille(xa,ya,xb,yb); +enddef; + +def finespace= +endfig; +enddef; + +def figure(expr xa,ya,xb,yb)=figureespace(xa,ya,xb,yb) +enddef; + +def fin=finespace +enddef; + +%definitions mathématiques +vardef cercles(text t)= + save Cer; + save n; + n:=0; + for p_=t: + if color p_: + n:=n+1; + _T[n]:=p_; + fi; + endfor; + path Cer; + color ptcer[]; + for k=0 step 5 until 360 : + ptcer[k div 5]-_T[1]=Distance(_T[1],_T[2])*((_T[4]-_T[3])*cosd(k)/Distance(_T[3],_T[4])+(_T[5]-_T[3])*sind(k)/Distance(_T[3],_T[5])); + endfor; + Cer=Projgeo(ptcer0) + for k=0 step 5 until 360 : + ..Projgeo(ptcer[k div 5]) + endfor + ..cycle; + Cer +enddef; + +vardef arcsind(expr x)=%en degré ici :) + angle((sqrt(1-x**2),x)) +enddef; + +vardef tand(expr x)=sind(x)/cosd(x)% +enddef; + +vardef cotand(expr x)=cosd(x)/sind(x)% +enddef; + +vardef ln(expr t)=mlog(t)/256% +enddef; + +%représentation paramétrique de la sphère terrestre. +vardef FX(expr t,v)=rayon*cosd(c*t)*cosd(c*v) +enddef; + +vardef FY(expr t,v)=rayon*cosd(c*t)*sind(c*v) +enddef; + +vardef FZ(expr t,v)=rayon*sind(c*t) +enddef; + +%Paramètres et macros de représentation +vardef Initialisation(expr r,t,p,d)= + Rho:=r; + Theta:=t; + Phi:=p; + DE:=d; + Aux1:=sind(Theta); + Aux2:=sind(Phi); + Aux3:=cosd(Theta); + Aux4:=cosd(Phi); + Aux5:=Aux3*Aux2; + Aux6:=Aux1*Aux2; + Aux7:=Aux3*Aux4; + Aux8:=Aux1*Aux4; +enddef; + +vardef Oeil=(Rho*Aux7,Rho*Aux8,Rho*Aux2) +enddef; + +vardef Vision(expr num)= + save bb; + color bb; + bb=(redpart(Oeil-Sommet[num]),greenpart(Oeil-Sommet[num]),bluepart(Oeil-Sommet[num])); + bb +enddef; + +vardef Normal(expr vecun,vecde,vectr)= + save aa; + color aa; + P1:=redpart(vecde-vecun); + P2:=greenpart(vecde-vecun); + P3:=bluepart(vecde-vecun); + Q1:=redpart(vectr-vecun); + Q2:=greenpart(vectr-vecun); + Q3:=bluepart(vectr-vecun); + aa=(P2*Q3-Q2*P3,P3*Q1-Q3*P1,P1*Q2-Q1*P2); + aa +enddef; + +vardef ProduitScalaire(expr wec,mor)= + redpart(wec)*redpart(mor)+greenpart(wec)*greenpart(mor)+bluepart(wec)*bluepart(mor) +enddef; + +vardef Distance(expr aa,bb)=%Entre deux points + sqrt((redpart(bb)-redpart(aa))*(redpart(bb)-redpart(aa))+(greenpart(bb)-greenpart(aa))*(greenpart(bb)-greenpart(aa))+(bluepart(bb)-bluepart(aa))*(bluepart(bb)-bluepart(aa))) +enddef; + +vardef MaillageS= + path Maillage[]; + color CentMaillage[]; + %numeric Vmin,Vmax; + %total:=0; + for k=Udebut step 0.5*pasU until (Ufin): + for l=Vdebut step pasV until (Vfin): + Maillage[100*k+l]=Projgeo((FX(k,l),FY(k,l),FZ(k,l)))--Projgeo((FX(k,l+pasV),FY(k,l+pasV),FZ(k,l+pasV)))--Projgeo((FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV)))--Projgeo((FX(k+pasU,l),FY(k+pasU,l),FZ(k+pasU,l)))--cycle; + if ProduitScalaire(1/2[(FX(k,l),FY(k,l),FZ(k,l)),(FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV))]-pte3,Oeil-pte3)>0: + %total:=total+1; + %if total=1: + % Vmin:=l; + %fi; + draw Maillage[100*k+l]; + fi; + endfor; + endfor; + %drawoptions(); + %for k=(Udebut+pasU) step pasU until (Ufin-pasU): + % if abs(round(k*c))<100: + % label.urt(TEX(""&decimal(round(k*c))&""),Projgeo(rayon*(cosd(round(k*c))*cosd(Theta),cosd(round(k*c))*sind(Theta),sind(round(k*c))))) + % fi; + %endfor; + %Vmax:=0; + %Vmax:=Vmin+2*((Theta/c)-Vmin); + %label.top(TEX(""&decimal(round(Vmin*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmin*c)),cosd(phim+10)*sind(round(Vmin*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim)))); + %label.top(TEX(""&decimal(round(Theta))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Theta)),cosd(phim+10)*sind(round(Theta)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim)))); + %label.top(TEX(""&decimal(round(Vmax*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmax*c)),cosd(phim+10)*sind(round(Vmax*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim)))); +enddef; + +vardef InitialiseMaillage(expr ud,uf,up,vd,vf,vp)= + Udebut:=ud; + Ufin:=uf; + pasU:=up; + Vdebut:=vd; + Vfin:=vf; + pasV:=vp; +enddef; + +vardef MaillageSphere= + InitialiseMaillage(((phim div 10)+1)*pi/18,((phip div 10)-1)*pi/18,pi/18,-pi,pi,pi/36); + MaillageS; +enddef; + +boolean maille; +maille=false; + +vardef ParaMeri(expr lonn,latt)=%longitude et latitude en degrés%Parallèle et méridien particulier pour une représentation 3d. + maille:=true; + latpar:=latt; + lonpar:=lonn; +enddef; + +vardef Maille= + InitialiseMaillage(((phim div 10)+1)*pi/18,((phip div 10)-1)*pi/18,pi/36,-pi,pi,pi/72); + path SMaillage[];picture Smaille; + drawoptions(withpen pencircle scaled 2bp withcolor orangevif); + for l=Vdebut step pasV until (Vfin+pasV): + SMaillage[100*latpar+l]=Projgeo((FX(latpar/c,l),FY(latpar/c,l),FZ(latpar/c,l)))--Projgeo((FX(latpar/c,l+pasV),FY(latpar/c,l+pasV),FZ(latpar/c,l+pasV))); + if ProduitScalaire(1/2[(FX(latpar/c,l),FY(latpar/c,l),FZ(latpar/c,l)),(FX(latpar/c,l+pasV),FY(latpar/c,l+pasV),FZ(latpar/c,l+pasV))]-pte3,Oeil-pte3)>0: + draw SMaillage[100*latpar+l]; + fi; + endfor; + for k=Udebut step pasU until (Ufin+pasU): + SMaillage[k+100*lonpar]:=Projgeo((FX(k,lonpar/c),FY(k,lonpar/c),FZ(k,lonpar/c)))--Projgeo((FX(k+pasU,lonpar/c),FY(k+pasU,lonpar/c),FZ(k+pasU,lonpar/c))); + if ProduitScalaire(1/2[(FX(k,lonpar/c),FY(k,lonpar/c),FZ(k,lonpar/c)),(FX(k+pasU,lonpar/c),FY(k+pasU,lonpar/c),FZ(k+pasU,lonpar/c))]-pte3,Oeil-pte3)>0: + draw SMaillage[k+100*lonpar]; + fi; + endfor; + drawoptions(); + %); +enddef; + +vardef Projgeo(expr X)= + pair $; + numeric Xobs,Yobs,Zobs,XProj,YProj; + Xobs = -redpart(X)*Aux1 + greenpart(X)*Aux3; + Yobs = -redpart(X)*Aux5 - greenpart(X)*Aux6 + bluepart(X)*Aux4; + Zobs = -redpart(X)*Aux7 - greenpart(X)*Aux8 - bluepart(X)*Aux2 + Rho; + XProj = DE*Xobs/Zobs; + YProj = DE*Yobs/Zobs; + $=(XProj,YProj); + $ +enddef; + +%Début du package +numeric nbpts,nblec,nbcapitales; + +vardef lecture(expr nomfichier,fond)= + color Coord[],Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichier; + for k=1 upto (nbpts div 3): + pair latlon; + latlon=((scantokens readfrom nomfichier)+(scantokens readfrom nomfichier)+(scantokens readfrom nomfichier))/3; + Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + closefrom nomfichier; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto (nbpts div 3): + --Projgeo(Pays[l]) + endfor; + if noncolore=true: + fill pays--cycle withcolor payscolor; + else: + fill pays--cycle withcolor fond; + fi; + draw pays; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; +enddef; + +string nomfichiermul,NomFichier; + +vardef Lectureiles= + nomfichiermul:=arborescence&"iles.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + color Coord[],fond,Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichiermul; + fond=scantokens readfrom nomfichiermul; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto nbpts: + --Projgeo(Pays[l]) + endfor; + if noncolore=true: + fill pays--cycle withcolor payscolor; + else: + fill pays--cycle withcolor fond; + fi; + draw pays; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturelacs= + nomfichiermul:=arborescence&"lacs.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + color Coord[],Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichiermul; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto nbpts: + --Projgeo(Pays[l]) + endfor; + fill pays--cycle withcolor couleurfleuve; + draw pays; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturelacssup= + nomfichiermul:=arborescence&"lacssup.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + color Coord[],Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichiermul; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[k]=rayon*(cosd(xpart(latlon))*cosd(ypart(latlon)),cosd(xpart(latlon))*sind(ypart(latlon)),sind(xpart(latlon))); + if ((xpart(latlon)>phim) and (xpart(latlon)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto nbpts: + --Projgeo(Pays[l]) + endfor; + fill pays--cycle withcolor couleurfleuve; + draw pays; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturevolcans= + drawoptions(withcolor orange); + nomfichiermul:=arborescence&"volcans.dat"; + nblec:=scantokens readfrom nomfichiermul; + show nblec; + for p=1 upto nblec: + color Coord[],Pays[]; + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[p]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[p]-pte3,Oeil-pte3)>0: + Pays[p]=Coord[p]; + fill flamme shifted Projgeo(Pays[p]) withcolor 1/2[orange,jaune]; + %else: +% Pays[k]=2*Coord[k]; + fi; +% else: +% Pays[k]=2*Coord[k]; + fi; + endfor; +closefrom nomfichiermul; +drawoptions(); +enddef; + +vardef Lecturerivieres= + nomfichiermul:=arborescence&"rivieres.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + color Coord[],fond,Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichiermul; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto nbpts: + --Projgeo(Pays[l]) + endfor; + draw pays withcolor couleurfleuve; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturerivieressup= + nomfichiermul:=arborescence&"fleuveseurope.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + color Coord[],fond,Pays[]; + numeric ll; + ll:=0; + nbpts:=scantokens readfrom nomfichiermul; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + Coord[k]=rayon*(cosd(xpart(latlon))*cosd(ypart(latlon)),cosd(xpart(latlon))*sind(ypart(latlon)),sind(xpart(latlon))); + if ((xpart(latlon)>phim) and (xpart(latlon)<phip)): + if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: + ll:=ll+1; + Pays[k]=Coord[k]; + else: + Pays[k]=2*Coord[k]; + fi; + else: + Pays[k]=2*Coord[k]; + fi; + endfor; + path pays; + if ll>0: + pays=Projgeo(Pays[1]) + for l=2 upto nbpts: + --Projgeo(Pays[l]) + endfor; + draw pays withcolor couleurfleuve; + clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturecapitales= + marque_p:="creux"; + nomfichiermul:=arborescence&"capitales.dat"; + nbcapitales:=scantokens readfrom nomfichiermul; + for p=1 upto nbcapitales: + color Coord[]; + pair latlon; + picture Nom; + string p_; + p_=scantokens readfrom nomfichiermul; + latlon=scantokens readfrom nomfichiermul; + Coord[p]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + Nom=image( + label.top(TEX(""&p_&""),Projgeo(Coord[p])); + ); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[p]-pte3,Oeil-pte3)>0: + pointe(Coord[p]); + %draw Nom; + fi; + fi; + endfor; + closefrom nomfichiermul; + marque_p:="non"; +enddef; + +vardef Lecture(expr Nomfichier)= + NomFichier:=arborescence&Nomfichier; + nblec:=scantokens readfrom NomFichier; + for w=1 upto nblec: + if projection="non": + lecture(scantokens readfrom NomFichier); + else: + lecturep(scantokens readfrom NomFichier); + fi; + endfor; + closefrom NomFichier; +enddef; + +%Pour les projections +string projection; +projection:="non"; + +vardef zoom(expr nbzoom)= + if projection="mercator": + xunit:=nbzoom; + yunit:=nbzoom*2*cm; + elseif projection="cylindrique": + xunit:=2.5*nbzoom; + yunit:=nbzoom*10*cm; + elseif projection="simple": + xunit:=nbzoom*0.5*mm; + yunit:=nbzoom*0.5*mm; + elseif projection="bonne": + xunit:=nbzoom*4*cm; + yunit:=xunit; + fi; +enddef; + +vardef mercatorc(expr aa,bb)= + (xunit*(bb-theta),yunit*(ln(abs(tand(45+(aa/2))))-ln(abs(tand(45+(phi/2)))))) +enddef; + +vardef coniquec(expr aa,bb,pc)= + abscon:=5*cm*(cosd(aa)*sind(bb*sind(pc)))/(sind(pc)*cosd(aa-pc)); + ordcon:=5*cm*(cosd(aa)*cosd(bb*sind(pc)))/(sind(pc)*cosd(aa-pc)); + (abscon,ordcon) +enddef; + +vardef cylindriquec(expr aa,bb)= + (xunit*(bb-theta),yunit*(sind(aa)-sind(phi))) +enddef; + +vardef simplec(expr aa,bb)= + (xunit*(bb-theta),yunit*(aa-phi)) +enddef; + +vardef bonnec(expr aaa,bbb)= + save tt; + pair tt; + rho:=cotand(phi)+(phi-aaa)/c; + %E:=(((bbb-theta)/c)*cosd(aaa))/rho; + E:=(((bbb-theta)/c)/rho)*cosd(aaa); + tt=xunit*(rho*sind(E*c),cotand(phi)-rho*cosd(E*c)); + tt +enddef; + +vardef lecturep(expr nomfichier,fond)= + pair Coord[]; + nbpts:=scantokens readfrom nomfichier; + numeric ll; + ll=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichier; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)) + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="simple": + Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),-45); + fi; + fi; + endfor; + closefrom nomfichier; + path pays; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts + fi; + if ll>0: + pays=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + if noncolore=true: + fill pays--cycle withcolor payscolor; + else: + fill pays--cycle withcolor fond; + fi; + draw pays; + fi; + %label.top(decimal(nbpts),(0,0)); +enddef; + +vardef Lectureilesp= + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + nomfichiermul:=arborescence&"Ile.dat"; + else: + nomfichiermul:=arborescence&"iles.dat"; + fi; + nblec:=scantokens readfrom nomfichiermul; + if projection="bonne": + nblec:=nblec-1 + fi; + for p=1 upto nblec: + pair Coord[];color fond; + nbpts:=scantokens readfrom nomfichiermul; + fond=scantokens readfrom nomfichiermul; + numeric ll; + ll=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)) + elseif projection="simple": + Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),45) + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),-45); + fi; + fi; + endfor; + path pays; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts + fi; + if ll>0: + pays=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + if noncolore=true: + fill pays--cycle withcolor payscolor; + else: + fill pays--cycle withcolor fond; + fi; + draw pays; + fi; + endfor; + closefrom nomfichiermul; + if (projection="mercator") or (projection="cylindrique") or (projection="simple"): + clip currentpicture to feuillet; + fi; + if projection="bonne": + lecturep(arborescence&"polesud.dat",blanc); + clip currentpicture to (bonnec(-90,-180) for k=-89 upto 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-89 upto 90:..bonnec(k,180) endfor)..cycle; + fi; +enddef; + +%14/05/2017 +boolean ecriturevilles; +ecriturevilles:=true; +%14/05/2017 + +vardef Lecturevillesp(expr nompays)= + nomfichiermul:=arborescence&"villes"&nompays&".dat"; + nblec:=scantokens readfrom nomfichiermul; + drawoptions(withcolor (0.15,0.15,0.15)); + for p=1 upto nblec: + pair Coord[],latlon;string p_; + latlon=scantokens readfrom nomfichiermul; + p_=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[p]=mercatorc(ypart(latlon),xpart(latlon)); + elseif projection="simple": + Coord[p]=simplec(ypart(latlon),xpart(latlon)); + elseif projection="cylindrique": + Coord[p]=cylindriquec(ypart(latlon),xpart(latlon)); + elseif projection="bonne": + Coord[p]=bonnec(ypart(latlon),xpart(latlon)); + fi; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if ecriturevilles=true: + dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]); + else: + dotlabel.scantokens readfrom nomfichiermul("",Coord[p]); + fi; + fi; + endfor; + drawoptions(); + closefrom nomfichiermul; +enddef; + +%16/02/2010 + +vardef Lecturevilles(expr nomfich)= +marque_p:="creux"; + nomfichiermul:=nomfich&".dat"; + nbcapitales:=scantokens readfrom nomfichiermul; + for p=1 upto nbcapitales: + color Coord[]; + pair latlon; + picture Nom; + string p_; + p_=scantokens readfrom nomfichiermul; + latlon=scantokens readfrom nomfichiermul; + Coord[p]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60))); + Nom=image( + label.scantokens readfrom nomfichiermul(TEX(""&p_&""),Projgeo(Coord[p])); + ); + if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)): + if ProduitScalaire(Coord[p]-pte3,Oeil-pte3)>0: + pointe(Coord[p]); + draw Nom; + fi; + fi; + endfor; + closefrom nomfichiermul; + marque_p:="non"; +enddef; +% + + +vardef Lecturelacsp= + nomfichiermul:=arborescence&"lacs.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + pair Coord[]; + nbpts:=scantokens readfrom nomfichiermul; + numeric ll; + ll=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + elseif projection="simple": + Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),-45); + fi; + fi; + endfor; + path lac; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts + fi; + if ll>0: + lac=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + fill lac--cycle withcolor couleurfleuve; + draw lac; + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturelacspsup= + nomfichiermul:=arborescence&"lacssup.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + pair Coord[]; + nbpts:=scantokens readfrom nomfichiermul; + numeric ll; + ll=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon),ypart(latlon)); + elseif projection="simple": + Coord[k]=simplec(xpart(latlon),ypart(latlon)); + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon),ypart(latlon)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon),ypart(latlon)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon),ypart(latlon),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon),ypart(latlon),-45); + fi; + fi; + endfor; + path lac; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts + fi; + if ll>0: + lac=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + fill lac--cycle withcolor couleurfleuve; + draw lac; + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturerivieresp= + nomfichiermul:=arborescence&"rivieres.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + pair Coord[]; + nbpts:=scantokens readfrom nomfichiermul; + numeric ll; + ll:=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + elseif projection="simple": + Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon/60),ypart(latlon/60)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon/60),ypart(latlon/60),-45); + fi; + fi; + endfor; + path riv; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts; + fi; + if ll>0: + riv=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + draw riv withcolor couleurfleuve; + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturerivierespsup= + nomfichiermul:=arborescence&"fleuveseurope.dat"; + nblec:=scantokens readfrom nomfichiermul; + for p=1 upto nblec: + pair Coord[]; + nbpts:=scantokens readfrom nomfichiermul; + numeric ll; + ll:=0; + for k=1 upto nbpts: + pair latlon; + latlon=scantokens readfrom nomfichiermul; + if projection="mercator": + Coord[k]=mercatorc(xpart(latlon),ypart(latlon)); + elseif projection="simple": + Coord[k]=simplec(xpart(latlon),ypart(latlon)); + elseif projection="cylindrique": + Coord[k]=cylindriquec(xpart(latlon),ypart(latlon)); + elseif projection="bonne": + Coord[k]=bonnec(xpart(latlon),ypart(latlon)); + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon),ypart(latlon),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=ll+1; + Coord[ll]=coniquec(xpart(latlon),ypart(latlon),-45); + fi; + fi; + endfor; + path riv; + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + ll:=nbpts; + fi; + if ll>0: + riv=Coord[1] + for l=2 upto ll: + --Coord[l] + endfor; + draw riv withcolor couleurfleuve; + fi; + endfor; + closefrom nomfichiermul; +enddef; + +vardef Lecturecapitalesp= + marque_p:="creux"; + nomfichiermul:=arborescence&"capitales.dat"; + nbcapitales:=scantokens readfrom nomfichiermul; + for p=1 upto nbcapitales: + pair Coord[],latlon; + string p_; + p_=scantokens readfrom nomfichiermul; + latlon=scantokens readfrom nomfichiermul; + ll:=0; + if projection="mercator": + Coord[p]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + ll:=1; + elseif projection="simple": + Coord[p]=simplec(xpart(latlon/60),ypart(latlon/60)); + ll:=1; + elseif projection="cylindrique": + Coord[p]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); + ll:=1; + elseif projection="bonne": + Coord[p]=bonnec(xpart(latlon/60),ypart(latlon/60)); + ll:=1; + elseif projection="coniqueh": + if (xpart(latlon)>0) or (xpart(latlon)=0): + ll:=1; + Coord[p]=coniquec(xpart(latlon/60),ypart(latlon/60),45); + fi; + elseif projection="coniqueb": + if (xpart(latlon)<0): + ll:=1; + Coord[p]=coniquec(xpart(latlon/60),ypart(latlon/60),-45); + fi; + fi; + if ll>0: + drawoptions(withcolor rouge); + pointe(Coord[p]); + drawoptions(); + if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + label.top(TEX(""&p_&""),Coord[p]); + fi; + fi; + endfor; + closefrom nomfichiermul; + marque_p:="non"; +enddef; + +vardef MeridienParallele= + if (projection="mercator") or (projection="cylindrique") or (projection="simple"): + pair Coord[]; + for k=-80 step 10 until 80: + for j=-180 step 10 until 180: + if projection="mercator": + Coord[100*k+j]=mercatorc(k,j); + elseif projection="simple": + Coord[k]=simplec(k,j); + elseif projection="cylindrique": + Coord[100*k+j]=cylindriquec(k,j); + fi; + endfor; + endfor; + for k=-80 step 10 until 80: + draw Coord[100*k-180] + for j=-170 step 10 until 180: + --Coord[100*k+j] + endfor; + endfor; + pair Coord[]; + for k=-180 step 10 until 180: + for j=-80 step 10 until 80: + if projection="mercator": + Coord[0.001*k+10*j]=mercatorc(j,k); + elseif projection="simple": + Coord[k]=simplec(j,k); + elseif projection="cylindrique": + Coord[0.001*k+10*j]=cylindriquec(j,k); + fi; + endfor; + endfor; + for k=-180 step 10 until 180: + draw Coord[0.001*k-10*80] + for j=-70 step 10 until 80: + --Coord[0.001*k+10*j] + endfor; + endfor; + elseif projection="bonne": + pair Coord[][]; + for k=-90 step 10 until 90: + for j=-180 step 10 until 180: + Coord[k][j]=bonnec(k,j); + endfor; + endfor; + for k=-90 step 10 until 90: + draw Coord[k][-180] + for j=-170 step 10 until 180: + --Coord[k][j] + endfor; + endfor; + pair Coord[][]; + for k=-170 step 10 until 170: + for j=-90 step 10 until 90: + Coord[k][j]=bonnec(j,k); + endfor; + endfor; + for k=-170 step 10 until 170: + draw Coord[k][-90] + for j=-80 step 10 until 90: + ..Coord[k][j] + endfor; + endfor; + elseif projection="coniqueh": + pair Coord[]; + for k=-180 step 10 until 180: + for j=0 step 10 until 90: + Coord[100*k+j]=coniquec(j,k,45); + endfor; + endfor; + for k=-180 step 10 until 180: + draw Coord[100*k] + for j=10 step 10 until 90: + --Coord[100*k+j] + endfor; + endfor; + pair Coord[]; + for k=0 step 10 until 90: + for j=-180 step 10 until 180: + Coord[0.001*k+10*j]=coniquec(k,j,45); + endfor; + endfor; + for k=0 step 10 until 90: + draw Coord[0.001*k-10*180] + for j=-170 step 10 until 180: + --Coord[0.001*k+10*j] + endfor; + endfor; + clip currentpicture to coniquec(90,0,45)--(Coord[-10*180] + for j=-170 step 10 until 180: + --Coord[10*j] + endfor)--cycle; + elseif projection="coniqueb": + pair Coord[]; + for k=-180 step 10 until 180: + for j=-90 step 10 until 0: + Coord[100*k+j]=coniquec(j,k,-45); + endfor; + endfor; + for k=-180 step 10 until 180: + draw Coord[100*k-90] + for j=-80 step 10 until 0: + --Coord[100*k+j] + endfor; + endfor; + pair Coord[]; + for k=-90 step 10 until 0: + for j=-180 step 10 until 180: + Coord[0.001*k+10*j]=coniquec(k,j,-45); + endfor; + endfor; + for k=-90 step 10 until 0: + draw Coord[0.001*k-10*180] + for j=-170 step 10 until 180: + --Coord[0.001*k+10*j] + endfor; + endfor; + clip currentpicture to coniquec(-90,0,-45)--(Coord[-10*180] + for j=-170 step 10 until 180: + --Coord[10*j] + endfor)--cycle; + fi; +enddef; + +boolean Echelle; +Echelle=false; + +vardef echelle(expr Th,Ph,long)=%long en km. + %Echelle:=true; + theta:=Th; + phi:=Ph; + Long:=long; + zoom(1); + numeric $; + if projection="bonne": + $=(cm*pi*cosd(Ph)/36)/(long*abs(bonnec(Ph,Th)-bonnec(Ph,Th+5)))*6340; + elseif projection="mercator": + $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(mercatorc(Ph,Th)-mercatorc(Ph,Th+5))); + elseif projection="simple": + $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(simplec(Ph,Th)-simplec(Ph,Th+5))); + elseif projection="cylindrique": + $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(cylindriquec(Ph,Th)-cylindriquec(Ph,Th+5))); + fi; + $ +enddef; + +boolean Amsud,Amnord,Amcentrale,Caraibes,Asie,Europe,Afrique,All; + +Amsud:=false; +Amnord:=false; +Amcentrale:=false; +Caraibes:=false; +Asie:=false; +Europe:=false; +Afrique:=false; +All:=true; + +vardef Projection(expr TH,PH,Zoom)= + theta:=TH; + phi:=PH; + zoom(Zoom); + if projection="bonne": + fill (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle withcolor couleurfond; + fi; + if All=true: + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casia.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + else: + if Amsud=true: + Lecture("Cameriquesud.dat"); + fi; + if Amnord=true: + Lecture("Cameriquenord.dat"); + fi; + if Amcentrale=true: + Lecture("Cameriquecentrale.dat"); + fi; + if Caraibes=true: + Lecture("Ccaraibes.dat"); + fi; + if Asie=true: + if projection="bonne": + Lecture("Casie.dat"); + else: + Lecture("Casia.dat"); + fi; + fi; + if Europe=true: + Lecture("Ceurope.dat"); + fi; + if Afrique=true: + Lecture("Cafrique.dat"); + fi; + fi; + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + Lecturerivierespsup; + fi; + if maillage=true: + drawoptions(withcolor gris); + MeridienParallele + drawoptions(); + fi; + if Echelle=true: + draw ((Xa,Ya)+u*(1,1))--((Xa,Ya)+u*(2,1)); + labeloffset:=labeloffset*1.5; + label.top(btex 0 etex,(Xa,Ya)+u*(1,1)); + label.top(TEX(""&decimal(Long)&"~km"),(Xa,Ya)+u*(2,1)); + labeloffset:=labeloffset/1.5; + draw ((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9)); + draw (((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9))) shifted(u*(1,0)); + fi; +enddef; + +vardef Simple(expr TH,PH,Zoom)= + projection:="simple"; + theta:=TH; + phi:=PH; + zoom(Zoom); + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casia.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + fi; + if maillage=true: + MeridienParallele + fi; +enddef; + +vardef Mercator(expr TH,PH,Zoom)= + projection:="mercator"; + theta:=TH; + phi:=PH; + zoom(Zoom); + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casia.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + fi; + if maillage=true: + MeridienParallele + fi; +enddef; + +vardef Cylindrique(expr TH,PH,Zoom)= + projection:="cylindrique"; + theta:=TH; + phi:=PH; + zoom(Zoom); + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casia.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + fi; + if maillage=true: + MeridienParallele + fi; +enddef; + +vardef Bonne(expr TH,PH,Zoom)= + projection:="bonne"; + theta:=TH; + phi:=PH; + zoom(Zoom); + fill (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle withcolor couleurfond; + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casie.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + fi; + if maillage=true: + drawoptions(withcolor gris); + MeridienParallele; + drawoptions(); + fi; + draw (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle; +enddef; + +vardef ConiqueH= + projection:="coniqueh"; + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casie.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + Lecturerivierespsup; + fi; + drawoptions(withcolor gris); + MeridienParallele; + drawoptions(); +enddef; + +vardef ConiqueB= + projection:="coniqueb"; + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casie.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + Lecturerivierespsup; + fi; + drawoptions(withcolor gris); + MeridienParallele; + drawoptions(); +enddef; + +%%%%%%% + +rayon:=2; + +boolean fleuves,lacs,capitales,noncolore,maillage,volcans; +fleuves=true; +lacs=true; +capitales=true; +noncolore=false; +maillage=false; +volcans=false; + +color couleurfond,couleurmaillage,couleurfleuve; +couleurfond:=ciel; +couleurmaillage:=gris; +couleurfleuve:=cielfonce; + +vardef Mappemonde(expr longobs,latobs)= + projection:="non"; + %figureespace(-100u,-100u,100u,100u); + Initialisation(5,longobs,latobs,distanceecran); + numeric phim,phip,phii;%phi moins -- phi plus - phi intermédiaire + phim=Phi+arcsind(rayon/Rho)-90; + phip=Phi+90-arcsind(rayon/Rho); + color pte[]; + pte1=rayon*(cosd(phim)*cosd(Theta),cosd(phim)*sind(Theta),sind(phim)); + pte2=rayon*(cosd(phip)*cosd(Theta),cosd(phip)*sind(Theta),sind(phip)); + pte3=1/2[pte1,pte2]; + pte4-pte3=Normal((0,0,0),pte1,pte2); + if (Phi>90): + phip:=180-phip; + phii:=180-phim; + phim:=phip; + phip:=phii; + fi; + if (Phi<-90): + phip:=-180-phip; + phii:=-180-phim; + phim:=phip; + phip:=phii; + fi; + fill cercles(pte3,pte1,pte3,pte1,pte4) withcolor couleurfond; + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casie.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if volcans=true: + Lecturevolcans; + fi; + if lacs=true: + Lecturelacs; + Lecturelacssup; + fi; + Lectureiles; + if capitales=true: + Lecturecapitales; + fi; + if fleuves=true: + Lecturerivieres; + %Lecturerivieressup; + fi; + if maillage=true: + drawoptions(withcolor couleurmaillage); + MaillageSphere; + drawoptions(); + fi; + if maille=true: + Maille; + fi; + draw cercles(pte3,pte1,pte3,pte1,pte4); + %finespace; +enddef; + +vardef mappemonde(expr longobs,latobs)= + projection:="non"; + %figureespace(-100u,-100u,100u,100u); + Initialisation(5,longobs,latobs,distanceecran); + numeric phim,phip,phii;%phi moins -- phi plus - phi intermédiaire + phim=Phi+arcsind(rayon/Rho)-90; + phip=Phi+90-arcsind(rayon/Rho); + color pte[]; + pte1=rayon*(cosd(phim)*cosd(Theta),cosd(phim)*sind(Theta),sind(phim)); + pte2=rayon*(cosd(phip)*cosd(Theta),cosd(phip)*sind(Theta),sind(phip)); + pte3=1/2[pte1,pte2]; + pte4-pte3=Normal((0,0,0),pte1,pte2); + if (Phi>90): + phip:=180-phip; + phii:=180-phim; + phim:=phip; + phip:=phii; + fi; + if (Phi<-90): + phip:=-180-phip; + phii:=-180-phim; + phim:=phip; + phip:=phii; + fi; + fill cercles(pte3,pte1,pte3,pte1,pte4) withcolor couleurfond; + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casie.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if volcans=true: + Lecturevolcans; + fi; + if lacs=true: + Lecturelacs; + Lecturelacssup; + fi; + Lectureiles; + if capitales=true: + Lecturecapitales; + fi; + if fleuves=true: + Lecturerivieres; + %Lecturerivieressup; + fi; + if maillage=true: + drawoptions(withcolor couleurmaillage); + MaillageSphere; + drawoptions(); + fi; + if maille=true: + Maille; + fi; + draw cercles(pte3,pte1,pte3,pte1,pte4); +% finespace; +enddef; + +endinput; |