prologues:=2; input geometriesyr16; color tan,payscolor,cielfonce; tan=(0.824,0.705,0.55); payscolor=tan; cielfonce=(0.25,0.75,1); 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; 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; vardef arcsind(expr x)=%Définition mathématique en degré ici :) angle((sqrt(1-x**2),x)) enddef; numeric nbpts,nblec,nbcapitales; string arborescence; arborescence:="../DATA/"; path pays[];path paysnonvus[]; vardef lecture(expr nomfichier,fond)= color Coord[],Pays[],Paysnonvus[]; numeric ll,lnv; ll:=0;lnv:=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 ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: if ((xpart(latlon/60)>phim) and (xpart(latlon/60)0: nbvus:=nbvus+1; pays[nbvus]=Projgeo(Pays[1]) for l=2 upto (nbpts div 3): --Projgeo(Pays[l]) endfor; else: nbnonvus:=nbnonvus+1; %show nbnonvus; paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1]) for l=2 upto (nbpts div 3): --Projgeo(Paysnonvus[l]) endfor; fi; if lnv>0: nbnonvus:=nbnonvus+1; %show nbnonvus; paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1]) for l=2 upto (nbpts div 3): --Projgeo(Paysnonvus[l]) endfor; fi; enddef; string NomFichier; vardef Lecture(expr Nomfichier)= NomFichier:=arborescence&Nomfichier; nblec:=scantokens readfrom NomFichier; for w=1 upto nblec: lecture(scantokens readfrom NomFichier); endfor; closefrom NomFichier; enddef; string nomfichiermul; vardef Lectureiles= nomfichiermul:=arborescence&"iles.dat"; nblec:=scantokens readfrom nomfichiermul; for p=1 upto nblec: color Coord[],fond,Pays[],Paysnonvus[]; numeric ll,lnv; ll:=0;lnv:=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 ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0: if ((xpart(latlon/60)>phim) and (xpart(latlon/60)0: nbvus:=nbvus+1; pays[nbvus]=Projgeo(Pays[1]) for l=2 upto nbpts: --Projgeo(Pays[l]) endfor; else: nbnonvus:=nbnonvus+1; %show nbnonvus; paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1]) for l=2 upto nbpts: --Projgeo(Paysnonvus[l]) endfor; fi; if lnv>0: nbnonvus:=nbnonvus+1; %show nbnonvus; paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1]) for l=2 upto nbpts: --Projgeo(Paysnonvus[l]) endfor; fi; endfor; closefrom nomfichiermul; enddef; vardef Recap= %message("nombre de pays non vus (partiellement ou total)"); %show nbnonvus; %message("nombre de pays vus (partiellement ou total)"); %show nbvus; for k=1 upto nbnonvus: remplis paysnonvus[k]--cycle withcolor tan; trace paysnonvus[k]; endfor; fillcolor:=ciel; transparence cercles(pte3,pte1,pte3,pte1,pte4); for k=1 upto nbvus: remplis pays[k]--cycle withcolor tan; trace pays[k]; endfor; clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4); enddef; nbvus:=0; nbnonvus:=0; rayon:=2; vardef MaillageS= path Maillage[]; color CentMaillage[]; 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: draw Maillage[100*k+l]; fi; endfor; endfor; 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; vardef Mappemonde(expr longobs,latobs)= figureespace(-100u,-100u,100u,100u); Initialisation(5,longobs,latobs,750); 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=iso(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; Lecture("Cameriquesud.dat"); Lecture("Cameriquecentrale.dat"); Lecture("Ccaraibes.dat"); Lecture("Cameriquenord.dat"); Lecture("Casie.dat"); Lecture("Ceurope.dat"); Lecture("Cafrique.dat"); %Lecturelacs; Lectureiles; %Lecturerivieres; Recap; trace cercles(pte3,pte1,pte3,pte1,pte4); finespace; enddef; Mappemonde(-35,50); end