TD: Cadran solaire - ENT ISEN

Transcription

TD: Cadran solaire - ENT ISEN
TD: Cadran solaire
1 Position du problème
On souhaite réaliser un cadran solaire à l’aide d’un stylet, de longueur a, perpendiculaire à un plan. (Le
stylet n’est donc pas orienté vers le pôle nord céleste). Ce cadran solaire a les caractéristiques suivantes:
ϕ la latitude du lieu.
D la déclinaison gnomonique c.-à-d. l’azimut du stylet, mesuré à partir du sud et compté vers l’ouest. Si
D = 0◦ , alors le cadran est orienté plein sud; si D = 270◦ , le cadran est orienté plein est,. . .
z la distance zénithale du stylet. Si z = 0◦ , le cadran est horizontal (D est alors indéfini ); si z = 90◦ , le
cadran est vertical.
On prend l’origine cartésienne O du repère à la base du stylet et l’on appelle (x, y) les coordonnées de
l’extrémité de l’ombre du stylet. On choisit comme axe (Ox) l’horizontale et comme axe (Oy) la direction de
plus grande pente du cadran. x est compté positivement vers la droite et y positivement vers le haut.
L’angle horaire du Soleil H est mesuré à partir de midi pour le Soleil vrai; H augmente de 15◦ par heure. Par
exemple H = −45◦ correspond à 9h du matin (heure solaire vraie), H = +15◦ correspond à 1h de l’après-midi.
Dans les formules suivantes, pour chaque angle horaire H, la déclinaison δ du Soleil prendra successivement
−23◦ .44 (solstice d’hiver), −20◦ .15, −11.47, 0 (équinoxe), +11◦ .47, +20◦ .15 et +23◦ .44 (solstice d’été), ce qui
correspond aux dates où la longitude du Soleil est un multiple de 30◦ .
Au cours de la journée, l’extrémité de l’ombre du stylet décrira une conique sur le cadran (cercle, ellipse,
parabole ou hyperbole). Toutefois, si δ = 0◦ , la courbe sera toujours une droite.
Le plan représente la surface du cadran solaire.
OP est le stylet, de longueur a, placé en O(0, 0), perpendiculaire à ce plan.
Le point I est le centre du cadran de coordonnées (x0 , y0 ).
IP est le stylet polaire de longueur u.
P 0 est l’extrémité de l’ombre sur le cadran de coordonnées (x, y).
1. Pour un angle horaire H, calculer:
P = sin ϕ. cos z − cos ϕ. sin z. cos D
Q = sin D. sin z. sin H + (cos ϕ. cos z + sin ϕ. sin z. cos D). cos H + P. tan δ
On peut alors choisir les directions (Ox) et (Oy) comme l’on veut.
Dans ce cas, on prendra D = 0◦ , (Ox) vers l’est et (Oy) vers le nord.
1
ISEN-Brest. Kany.
TD: Cadran solaire
Nx = cos D. sin H − sin D.(sin ϕ. cos H − cos ϕ. tan δ)
Ny = cos z. sin D. sin H −(cos ϕ. sin z −sin ϕ. cos z. cos D). cos H −(sin ϕ. sin z +cos ϕ. cos z. cos D). tan δ
Les coordonnées x et y sont alors données par: x = a.Nx /Q et y = a.Ny /Q
On obtient ainsi une série de points. En reliant ces points, on obtient une droite correspondant à une
certaine heure (en temps local vrai).
2. Réitérer l’opération pour différentes valeurs de H. (On prendra des pas de 15◦ ).
Former l’intersection des droites des heures (en temps local vrai); ce point (s’il existe) est le centre du
cadran; il correspond au point de fixation d’un stylet polaire (qui serait parallèle à l’axe de rotation de la
Terre). Ces coordonnées x0 et y0 sont données par:
x0 = Pa . cos ϕ. sin D et y0 = − Pa .(sin ϕ. sin z + cos ϕ. cos z. cos D)
3. Soit u la longueur du stylet polaire entre son point de fixation en (x0 , y0 ) et l’extrémité du stylet perpendiculaire au cadran (de longueur a). On a: u = |Pa | ; l’angle Ψ que le stylet polaire fait avec le plan du
cadran est donné par: sin Ψ = |P |.
N.B. (x0 , y0 ) n’est défini que si P 6= 0 (i.e. cos D. tan z 6= tan ϕ), sinon le stylet polaire est parallèle au plan
du cadran.
Il faut ensuite limiter le tracé du cadran à des valeurs vraiment utiles. Par exemple, un cadran vertical
orienté plein nord (D = 180◦ ), à une latitude de +40◦ , n’indiquera jamais 11h du matin (Soleil vrai). À
cette même latitude, un cadran vertical orienté plein sud n’indiquera jamais 19h aux alentours du solstice
d’été.
Pour être sur que le cadran solaire fonctionne vraiment, deux conditions doivent être simultanément remplies: que le Soleil soit au-dessus de l’horizon et que le cadran soit éclairé.
En pratique, pour une déclinaison δ donnée, l’angle horaire H0 du Soleil au lever et au coucher est donné
par: cos H0 = − tan ϕ. tan δ où H0 < 0 au lever et H0 > 0 au coucher du Soleil.
Pour chaque valeur de H, il faut vérifier que Q > 0 (sinon, le cadran n’est pas éclairé).
N.B. Il est possible qu’à une date donnée Q soit positif, puis négatif et redevienne positif plus tard !
a. Construire un cadran solaire, à une latitude de ϕ = +40◦ nord, avec D = 70◦ , z = 50◦ et a = 1. On
précisera notamment x0 , y0 et Ψ.
Calculer en particulier (x, y) pour H = +30◦ et δ = +23◦ .44 (solstice d’été) ainsi que (x, y) pour
H = −15◦ et δ = −11◦ .47
b. Construire un cadran solaire vertical à une latitude de ϕ = −35◦ , avec D = 160◦ , z = 90◦ et a = 1.
On précisera notamment x0 , y0 et Ψ.
Calculer en particulier (x, y) pour H = +45◦ et δ = 0◦ ainsi que (x, y) pour H = 0◦ et δ = +20◦ .15
c. Construire un cadran solaire incliné à une latitude de ϕ = +40◦ nord, avec D = 160◦ , z = 75◦ et
a = 1. On précisera notamment x0 , y0 et Ψ.
d. Construire un cadran solaire horizontal (z = 0◦ et D = 0◦ ) pour Brest ϕ = 48◦ .3 nord et 4◦ .5 ouest.
On précisera notamment x0 , y0 et Ψ.
4. Adapter les calculs pour tracer les droites des heures en temps local moyen en utilisant l’équation du
temps.
5. Adapter les calculs pour tracer les droites des heures en temps civil.
2
ISEN-Brest. Kany.
TD: Cadran solaire
2 Code avec Mathematica
Cadran Solaire
Entrées [1] à [26] inchangés par rapport au TD Equation du temps
Cadran Solaire
In[27]:= P[phi ,DD ,z ]:=Sin[phi] Cos[z]-Cos[phi] Sin[z] Cos[DD];
Q[phi ,DD ,z ,delta ,H ]:=Sin[DD] Sin[z] Sin[H]+
(Cos[phi] Cos[z]+Sin[phi] Sin[z] Cos[DD]) Cos[H] + P[phi,DD,z] Tan[delta];
Nx[phi ,DD ,z ,delta ,H ]:=Cos[DD] Sin[H]-Sin[DD] (Sin[phi] Cos[H] - Cos[phi] Tan[delta]);
Ny[phi ,DD ,z ,delta ,H ]:=Cos[z] Sin[DD] Sin[H]- (Cos[phi] Sin[z] - Sin[phi] Cos[z] Cos[DD])
Cos[H]- (Sin[phi] Sin[z] + Cos[phi] Cos[z] Cos[DD]) Tan[delta];
x[phi ,DD ,z ,delta ,H ,a ]:=a Nx[phi, DD, z, delta, H]/ Q[phi, DD, z, delta, H];
y[phi ,D ,z ,delta ,H ,a ]:=a Ny[phi, DD, z, delta, H]/ Q[phi, DD, z, delta, H];
x0[phi ,DD ,z ,a ]:=a Cos[phi] Sin[DD]/ P[phi, DD, z];
y0[phi ,DD ,z ,a ]:=-a (Sin[phi] Sin[z]+Cos[phi] Cos[z] Cos[DD])/P[phi,DD,z];
Psi[phi ,DD ,z ]:=N[ArcSin[Abs[P[phi,DD,z]]]/Degree];
In[36]:= AffichageCadran[Details ,Auto ,Range ]:=( delta=.;H=.; NbreDelta=7;NbreHeure=25;
DataDelta={ -23.44 Degree,-20.15 Degree,-11.47 Degree,
0,11.47 Degree,20.15 Degree,23.44 Degree};
DataCadran=Table[{xx0,yy0},{NbreDelta NbreHeure}];
For[d=1,d<=NbreDelta,d++, delta=N[DataDelta[[d]]];
For[h=1,h<=NbreHeure,h++, H=N[(180-(h-1) 360/(NbreHeure-1)) Degree];
If[Q[phi,DD,z,delta,H]>0,
DataCadran[[h+24 (d-1)]]={x[phi,DD,z,delta,H,a],y[phi,DD,z,delta,H,a]};
If[Details, Print["déclinaison: ",N[delta/Degree],"; heure vraie: ",
N[(H/Degree)/15],"; coordonnees: ", x[phi,DD,z,delta,H,a]," ; ",
y[phi,DD,z,delta,H,a]]] ]]];
DataCadran=Join[DataCadran,{{xx0,yy0}}];
ListPlot[DataCadran, AspectRatio->1, AxesOrigin->{0,0},
PlotRange->If[Auto,Automatic,{{-Range,Range},{-Range,Range}}]])
Exemple 1
In[37]:= phi=N[40 Degree]; DD=N[70 Degree]; z=N[50 Degree]; H=N[30 Degree];
delta=N[+23.44 Degree]; a=1; xx0=x0[phi,DD,z,a]
yy0=y0[phi,DD,z,a]
Psi[phi,DD,z]
x[phi,DD,z,delta,H,a]
y[phi,DD,z,delta,H,a]
H=N[-15 Degree]; delta=N[-11.47 Degree]; x[phi,DD,z,delta,H,a]
y[phi,DD,z,delta,H,a]
Out[43]=
Out[44]=
Out[45]=
Out[46]=
Out[47]=
Out[50]=
Out[51]=
3.38799
-3.11016
12.2672
-0.0390372
-0.361525
-2.00066
-1.10688
In[52]:= AffichageCadran[False,False,4]
3
ISEN-Brest. Kany.
TD: Cadran solaire
Out[52]= -Graphics-
Exemple 2
In[53]:= phi=N[-35 Degree]; DD=N[160 Degree]; z=N[90 Degree]; H=N[45 Degree];
delta=N[0 Degree]; a=1; xx0=x0[phi,DD,z,a]
yy0=y0[phi,DD,z,a]
Psi[phi,DD,z]
x[phi,DD,z,delta,H,a]
y[phi,DD,z,delta,H,a]
H=N[0 Degree]; delta=N[20.15 Degree]; x[phi,DD,z,delta,H,a]
y[phi,DD,z,delta,H,a]
Out[59]=
Out[60]=
Out[61]=
Out[62]=
Out[63]=
Out[66]=
Out[67]=
0.36397
0.745145
50.3315
-0.843942
-0.929792
0.36397
-0.741001
In[68]:= AffichageCadran[False,False,4]
4
ISEN-Brest. Kany.
TD: Cadran solaire
Out[68]= -Graphics-
Exemple 3
In[69]:= phi=N[+40 Degree]; DD=N[160 Degree]; z=N[75 Degree]; a=1; xx0=x0[phi,DD,z,a]
yy0=y0[phi,DD,z,a]
Psi[phi,DD,z]
Out[73]= 0.304059
Out[74]= -0.504333
Out[75]= 59.5062
In[76]:= AffichageCadran[False,False,4]
Out[76]= -Graphics-
Exemple 4
In[77]:= phi=N[+48.3 Degree]; DD=N[0 Degree]; z=N[0 Degree]; a=1; xx0=x0[phi,DD,z,a]
yy0=y0[phi,DD,z,a]
Psi[phi,DD,z]
5
ISEN-Brest. Kany.
TD: Cadran solaire
Out[81]= 0
Out[82]= -0.890967
Out[83]= 48.3
In[84]:= AffichageCadran[False,False,4]
Out[84]= -Graphics-
6
ISEN-Brest. Kany.
TD: Cadran solaire
Cadran analemmique
In[85]:= NbreDelta=32;delta=.; DataT={ CalculT[01,01,2000], CalculT[10,01,2000],
CalculT[21,01,2000], CalculT[29,01,2000], CalculT[09,02,2000], CalculT[23,02,2000],
CalculT[09,03,2000], CalculT[21,03,2000], CalculT[03,04,2000], CalculT[16,04,2000],
CalculT[02,05,2000], CalculT[12,05,2000], CalculT[21,05,2000], CalculT[02,06,2000],
CalculT[11,06,2000], CalculT[21,06,2000], CalculT[03,07,2000], CalculT[12,07,2000],
CalculT[24,07,2000], CalculT[02,08,2000], CalculT[13,08,2000], CalculT[28,08,2000],
CalculT[11,09,2000], CalculT[23,09,2000], CalculT[07,10,2000], CalculT[20,10,2000],
CalculT[04,11,2000], CalculT[14,11,2000], CalculT[22,11,2000], CalculT[03,12,2000],
CalculT[12,12,2000], CalculT[21,12,2000]}; DataDelta=delta[DataT];
DataEquTemps=EquTemps[DataT];
In[89]:= Analemmique[DecalageOuest ,Details ,Auto ,Range ]:=( delta=.;H=.; NbreDelta=32;
NbreHeure=25; DataCadran=Table[{xx0,yy0},{NbreDelta NbreHeure}];
For[d=1,d<=NbreDelta,d++, delta=N[DataDelta[[d]] Degree];
DecalageET=N[DataEquTemps[[d]]];
For[h=1,h<=NbreHeure,h++,
H=N[(180 -(h-1) 360/(NbreHeure-1) -(DecalageOuest+DecalageET)) Degree];
If[Q[phi,DD,z,delta,H]>0,
DataCadran[[h+24 (d-1)]]={x[phi,DD,z,delta,H,a],y[phi,DD,z,delta,H,a]};
If[Details, Print["déclinaison: ",N[delta/Degree],"; heure vraie: ",
N[(H/Degree)/15],"; coordonnees: ", x[phi,DD,z,delta,H,a]," ; ",
y[phi,DD,z,delta,H,a]]] ]]];
DataCadran=Join[DataCadran,{{xx0,yy0}}];
ListPlot[DataCadran, AspectRatio->1, AxesOrigin->{0,0},
PlotRange->If[Auto,Automatic,{{-Range,Range},{-Range,Range}}]])
7
ISEN-Brest. Kany.
TD: Cadran solaire
Exemple 5
In[90]:= phi=N[+35 Degree]; DD=N[0 Degree]; z=N[0 Degree]; a=1; xx0=x0[phi,DD,z,a]
yy0=y0[phi,DD,z,a]
Psi[phi,DD,z]
Out[94]= 0
Out[95]= -1.42815
Out[96]= 35
In[97]:= Analemmique[1.8,False,False,7]
Out[97]= -Graphics-
Pour Brest, taper: phi=N[+48.3 Degree];yy0=y0[phi,DD,z,a];Analemmique[4.5,False,False,7]
8
ISEN-Brest. Kany.
TD: Cadran solaire
3 Code avec Python
# -*- coding:
utf-8 -*4
3
2
1
4
3
2
1
00
1
2
3
4
1
2
3
4
1
2
3
4
4
3
2
1
4
3
2
1
00
1
2
3
4
9
ISEN-Brest. Kany.
TD: Cadran solaire
4
3
2
1
4
3
2
1
00
1
2
3
4
1
2
3
4
1
2
3
4
4
3
2
1
4
3
2
1
00
1
2
3
4
6
4
2
6
4
2
00
2
4
6
2
4
6
10