Ajout d'une animation avec fond séparé : le mouvement rétrograde des planètes
[svganimation.git] / mvtretrograde / astro.mp
1 %@AUTEUR: Maxime Chupin
2 %@DATE: 28 janvier 2010
3 %@MODIFICATION: 12 novembre 2016 (JMS) -----------------------------------------
4 %- Séparation du fond et des images variables avec cadre pour caler les BoundingBox
5 %- Modification des codes des caractères astronomiques de façon à utiliser une
6 %  fonte de type 1 pour la production des images SVG.
7 %-------------------------------------------------------------------------------
8
9 prologues := 3;
10 outputtemplate := "svg/%j%03c.svg";
11 outputformat := "svg";
12
13 u:=1cm;
14
15 picture zodiaque;
16 color Soleil, Mercure, Venus, Terre, Mars, Jupiter;
17 numeric mercure, venus, terre, mars, jupiter, rayonplanete;
18 picture Mer, Ven, Ter, Mar, Jup;
19
20 %%%%%%%%%%%%%%%% les couleurs %%%%%%%%%%%%%%%%%%%%%%%%
21 Soleil:= red+4/5*green;
22 Mercure:= 2/3*(red+green+blue);
23 Venus:= 5/6*red+4/5*green+0.6*blue;
24 Terre := 1/4*red+1/4*green+4/5*blue;
25 Mars := 0.8*red+0.2*green+0.3*blue;
26 Jupiter := 0.9*red+0.6*green+0.6*blue;
27
28 %%%%%%%%%%%%%%% les rayons des orbites %%%%%%%%%%%%%%%
29 terre:=2u;
30 mercure:=0.38709*terre;
31 venus:=0.72333*terre;
32 mars:=1.52366*terre;
33 jupiter:=5.20336*terre;
34
35
36 %%%%%%%%%%%%%% le trace des planetes %%%%%%%%%%%%%%%%
37 rayonplanete:=10pt;
38
39 Mer:=image(
40   fill fullcircle scaled rayonplanete withcolor Mercure;
41   draw fullcircle scaled rayonplanete;
42   );
43
44 Ven:=image(
45   fill fullcircle scaled rayonplanete withcolor Venus;
46   draw fullcircle scaled rayonplanete;
47   );
48
49 Ter:=image(
50   fill fullcircle scaled rayonplanete withcolor Terre;
51   draw fullcircle scaled rayonplanete;
52   );
53
54 Mar:=image(
55   fill fullcircle scaled rayonplanete withcolor Mars;
56   draw fullcircle scaled rayonplanete;
57   );
58
59 Jup:=image(
60   fill fullcircle scaled rayonplanete withcolor Jupiter;
61   draw fullcircle scaled rayonplanete;
62   );
63
64 %%%%%%%%%%%%%% rapport de vitesse angulaire %%%%%%%%%%%%%%%%%%%%%%%
65 numeric Vmer, Vven, Vter, Vmar, Vjup;
66
67 Vter:=2;
68 Vmer:=Vter*4.152093;
69 Vven:=Vter*1.625524;
70 Vmar:=Vter*0.531700;
71 Vjup:=Vter*0.084250;
72
73
74 %%% le cercle du zodiaque modelisant le plan du systeme solaire %%%
75 zodiaque:=image(
76   pickup pencircle scaled 2pt;
77   draw fullcircle scaled 13u;
78   draw fullcircle scaled 19u;
79   for i:=1 upto 12:
80       draw (char(96+i) infont "astrosym") rotated (30*(i-1)+90) scaled 4  shifted (8.4u*(cosd(30*(i-1)),sind(30*(i-1))));
81     draw ((-1.5u,0)--(1.5u,0)) rotated (30*(i-1)-10) shifted (8u*(cosd(30*(i-1)-10),sind(30*(i-1)-10)));
82   endfor;
83   );
84
85 path fond, cadre;
86 fond := 1.2*(-jupiter,-jupiter)--1.2*(-jupiter,jupiter)--1.2*(jupiter,jupiter)--1.2*(jupiter,-jupiter)--cycle;
87
88 beginfig(0);
89   fill fond withcolor 0.9*white;
90   draw zodiaque;
91   draw Mer shifted (1.4*jupiter,0.5*jupiter);
92   draw char(67) infont "astrosym" scaled 3 shifted (1.4*jupiter+0.5cm,0.5*jupiter);
93     
94   draw Ven shifted (1.4*jupiter,0.3*jupiter);
95   draw char(68) infont "astrosym" scaled 3 shifted (1.4*jupiter+0.5cm,0.3*jupiter);
96     
97   draw Ter shifted (1.4*jupiter,0.1*jupiter);
98   draw char(69) infont "astrosym" scaled 3 shifted (1.4*jupiter+0.5cm,0.1*jupiter);
99
100   draw Mar shifted (1.4*jupiter,-0.1*jupiter);
101   draw char(70) infont "astrosym" scaled 3 shifted (1.4*jupiter+0.5cm,-0.1*jupiter);
102     
103   draw Jup shifted (1.4*jupiter,-0.3*jupiter);
104   draw char(71) infont "astrosym" scaled 3 shifted (1.4*jupiter+0.5cm,-0.3*jupiter);
105   cadre := bbox currentpicture;
106   cadre := cadre scaled 1.02;
107   draw cadre withcolor white;
108 endfig;
109
110 for i:=0 upto 720:
111   beginfig(i+1);
112     pair PosMer, PosVen, PosTer,PosMar, PosJup;
113     PosMer:=mercure*(cosd(i*Vmer),sind(i*Vmer));
114     PosVen:=venus*(cosd(i*Vven),sind(i*Vven));
115     PosTer:=terre*(cosd(i*Vter),sind(i*Vter));
116     PosMar:=mars*(cosd(i*Vmar),sind(i*Vmar));
117     PosJup:=jupiter*(cosd(i*Vjup),sind(i*Vjup));
118     
119     
120     draw 30[PosTer,PosVen]--30[PosVen,PosTer] withcolor Venus withpen pencircle scaled 3pt;
121     draw 10[PosTer,PosJup]--10[PosJup,PosTer] withcolor Jupiter withpen pencircle scaled 3pt;
122     draw 15[PosTer,(0,0)]--15[(0,0),PosTer] withcolor Soleil withpen pencircle scaled 3pt;
123     
124     draw Mer shifted PosMer;
125     draw Ven shifted PosVen;
126     draw Ter shifted PosTer;
127     draw Mar shifted PosMar;
128     draw Jup shifted PosJup;
129     fill fullcircle scaled 15pt withcolor Soleil;
130     draw fullcircle scaled 15pt withpen pencircle scaled 1pt;
131     
132     clip currentpicture to cadre;
133     draw cadre withcolor white;    
134   endfig;
135 endfor;
136 end.

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.