5 color tan,payscolor,cielfonce;
6 tan=(0.824,0.705,0.55);
8 cielfonce=(0.25,0.75,1);
10 vardef Projgeo(expr X)=
12 numeric Xobs,Yobs,Zobs,XProj,YProj;
13 Xobs = -redpart(X)*Aux1 + greenpart(X)*Aux3;
14 Yobs = -redpart(X)*Aux5 - greenpart(X)*Aux6 + bluepart(X)*Aux4;
15 Zobs = -redpart(X)*Aux7 - greenpart(X)*Aux8 - bluepart(X)*Aux2 + Rho;
22 vardef FX(expr t,v)=rayon*cosd(c*t)*cosd(c*v)
25 vardef FY(expr t,v)=rayon*cosd(c*t)*sind(c*v)
28 vardef FZ(expr t,v)=rayon*sind(c*t)
31 vardef arcsind(expr x)=%Définition mathématique en degré ici :)
32 angle((sqrt(1-x**2),x))
35 numeric nbpts,nblec,nbcapitales;
38 arborescence:="../DATA/";
40 path pays[];path paysnonvus[];
42 vardef lecture(expr nomfichier,fond)=
43 color Coord[],Pays[],Paysnonvus[];
46 nbpts:=scantokens readfrom nomfichier;
47 for k=1 upto (nbpts div 3):
49 latlon=((scantokens readfrom nomfichier)+(scantokens readfrom nomfichier)+(scantokens readfrom nomfichier))/3;
50 Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60)));
51 if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0:
52 if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)):
55 Paysnonvus[k]=2*Coord[k];
58 Paysnonvus[k]=2*Coord[k];
63 Paysnonvus[k]=Coord[k];
69 pays[nbvus]=Projgeo(Pays[1])
70 for l=2 upto (nbpts div 3):
76 paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1])
77 for l=2 upto (nbpts div 3):
78 --Projgeo(Paysnonvus[l])
84 paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1])
85 for l=2 upto (nbpts div 3):
86 --Projgeo(Paysnonvus[l])
93 vardef Lecture(expr Nomfichier)=
94 NomFichier:=arborescence&Nomfichier;
95 nblec:=scantokens readfrom NomFichier;
97 lecture(scantokens readfrom NomFichier);
102 string nomfichiermul;
105 nomfichiermul:=arborescence&"iles.dat";
106 nblec:=scantokens readfrom nomfichiermul;
108 color Coord[],fond,Pays[],Paysnonvus[];
111 nbpts:=scantokens readfrom nomfichiermul;
112 fond=scantokens readfrom nomfichiermul;
115 latlon=scantokens readfrom nomfichiermul;
116 Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60)));
117 if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0:
118 if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)):
121 Paysnonvus[k]=2*Coord[k];
124 Paysnonvus[k]=2*Coord[k];
129 Paysnonvus[k]=Coord[k];
134 pays[nbvus]=Projgeo(Pays[1])
139 nbnonvus:=nbnonvus+1;
141 paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1])
143 --Projgeo(Paysnonvus[l])
147 nbnonvus:=nbnonvus+1;
149 paysnonvus[nbnonvus]=Projgeo(Paysnonvus[1])
151 --Projgeo(Paysnonvus[l])
155 closefrom nomfichiermul;
159 %message("nombre de pays non vus (partiellement ou total)");
161 %message("nombre de pays vus (partiellement ou total)");
163 for k=1 upto nbnonvus:
164 remplis paysnonvus[k]--cycle withcolor tan;
168 transparence cercles(pte3,pte1,pte3,pte1,pte4);
170 remplis pays[k]--cycle withcolor tan;
173 clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4);
183 color CentMaillage[];
184 for k=Udebut step 0.5*pasU until (Ufin):
185 for l=Vdebut step pasV until (Vfin):
186 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;
187 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:
188 draw Maillage[100*k+l];
194 vardef InitialiseMaillage(expr ud,uf,up,vd,vf,vp)=
203 vardef MaillageSphere=
204 InitialiseMaillage(((phim div 10)+1)*pi/18,((phip div 10)-1)*pi/18,pi/18,-pi,pi,pi/36);
208 vardef Mappemonde(expr longobs,latobs)=
209 figureespace(-100u,-100u,100u,100u);
210 Initialisation(5,longobs,latobs,750);
211 numeric phim,phip,phii;%phi moins -- phi plus - phi intermédiaire
212 phim=Phi+arcsind(rayon/Rho)-90;
213 phip=Phi+90-arcsind(rayon/Rho);
215 pte1=rayon*(cosd(phim)*cosd(Theta),cosd(phim)*sind(Theta),sind(phim));
216 pte2=rayon*(cosd(phip)*cosd(Theta),cosd(phip)*sind(Theta),sind(phip));
218 pte4-pte3=Normal((0,0,0),pte1,pte2);
231 Lecture("Cameriquesud.dat");
232 Lecture("Cameriquecentrale.dat");
233 Lecture("Ccaraibes.dat");
234 Lecture("Cameriquenord.dat");
235 Lecture("Casie.dat");
236 Lecture("Ceurope.dat");
237 Lecture("Cafrique.dat");
242 trace cercles(pte3,pte1,pte3,pte1,pte4);