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 = 70, 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 5 par heure. Par exemple H = 5 correspond à 9 h du matin (heure solaire vraie), H = +5 correspond à h de l après-midi. Dans les formules suivantes, pour chaque angle horaire H, la déclinaison δ du Soleil prendra successivement. (solstice d hiver), 0.5,.7, 0 (équinoxe), +.7, +0.5 et +. (solstice d été), ce qui correspond aux dates où la longitude du Soleil est un multiple de 0. 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 (x 0, y 0 ). IP est le stylet polaire de longueur u. P est l extrémité de l ombre sur le cadran de coordonnées (x, y).. 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.
N x = cos D. sin H sin D.(sin ϕ. cos H cos ϕ. tan δ) N y = 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.n x /Q et y = a.n y /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).. Réitérer l opération pour différentes valeurs de H. (On prendra des pas de 5 ). 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 x 0 et y 0 sont données par: x 0 = a P. cos ϕ. sin D et y 0 = a P.(sin ϕ. sin z + cos ϕ. cos z. cos D). Soit u la longueur du stylet polaire entre son point de fixation en (x 0, y 0 ) et l extrémité du stylet perpendiculaire au cadran (de longueur a). On a: u = a P ; l angle Ψ que le stylet polaire fait avec le plan du cadran est donné par: sin Ψ = P. N.B. (x 0, y 0 ) n est défini que si P 0 (i.e. cos D. tan z 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 = 80 ), à une latitude de +0, n indiquera jamais h du matin (Soleil vrai). À cette même latitude, un cadran vertical orienté plein sud n indiquera jamais 9 h 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 H 0 du Soleil au lever et au coucher est donné par: cos H 0 = tan ϕ. tan δ où H 0 < 0 au lever et H 0 > 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 ϕ = +0 nord, avec D = 70, z = 50 et a =. On précisera notamment x 0, y 0 et Ψ. Calculer en particulier (x, y) pour H = +0 et δ = +. (solstice d été) ainsi que (x, y) pour H = 5 et δ =.7 b. Construire un cadran solaire vertical à une latitude de ϕ = 5, avec D = 60, z = 90 et a =. On précisera notamment x 0, y 0 et Ψ. Calculer en particulier (x, y) pour H = +5 et δ = 0 ainsi que (x, y) pour H = 0 et δ = +0.5 c. Construire un cadran solaire incliné à une latitude de ϕ = +0 nord, avec D = 60, z = 75 et a =. On précisera notamment x 0, y 0 et Ψ. d. Construire un cadran solaire horizontal (z = 0 et D = 0 ) pour Brest ϕ = 8. nord et.5 ouest. On précisera notamment x 0, y 0 et Ψ.. 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.
Code avec Mathematica Cadran Solaire Entrées [] à [6] inchangés par rapport au TD Equation du temps Cadran Solaire In[7]:= 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[6]:= AffichageCadran[Details,Auto,Range ]:=( delta=.;h=.; NbreDelta=7;NbreHeure=5; DataDelta={ -. Degree,-0.5 Degree,-.7 Degree, 0,.7 Degree,0.5 Degree,. Degree}; DataCadran=Table[{xx0,yy0},{NbreDelta NbreHeure}]; For[d=,d<=NbreDelta,d++, delta=n[datadelta[[d]]]; For[h=,h<=NbreHeure,h++, H=N[(80-(h-) 60/(NbreHeure-)) Degree]; If[Q[phi,DD,z,delta,H]>0, DataCadran[[h+ (d-)]]={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)/5],"; coordonnees: ", x[phi,dd,z,delta,h,a]," ; ", y[phi,dd,z,delta,h,a]]] ]]]; DataCadran=Join[DataCadran,{{xx0,yy0}}]; ListPlot[DataCadran, AspectRatio->, AxesOrigin->{0,0}, PlotRange->If[Auto,Automatic,{{-Range,Range},{-Range,Range}}]]) Exemple In[7]:= phi=n[0 Degree]; DD=N[70 Degree]; z=n[50 Degree]; H=N[0 Degree]; delta=n[+. Degree]; a=; 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[-5 Degree]; delta=n[-.7 Degree]; x[phi,dd,z,delta,h,a] y[phi,dd,z,delta,h,a] Out[]=.8799 Out[]= -.06 Out[5]=.67 Out[6]= -0.0907 Out[7]= -0.655 Out[50]= -.00066 Out[5]= -.0688 In[5]:= AffichageCadran[False,False,]
Out[5]= -Graphics- Exemple In[5]:= phi=n[-5 Degree]; DD=N[60 Degree]; z=n[90 Degree]; H=N[5 Degree]; delta=n[0 Degree]; a=; 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[0.5 Degree]; x[phi,dd,z,delta,h,a] y[phi,dd,z,delta,h,a] Out[59]= 0.697 Out[60]= 0.755 Out[6]= 50.5 Out[6]= -0.89 Out[6]= -0.9979 Out[66]= 0.697 Out[67]= -0.700 In[68]:= AffichageCadran[False,False,]
Out[68]= -Graphics- Exemple In[69]:= phi=n[+0 Degree]; DD=N[60 Degree]; z=n[75 Degree]; a=; xx0=x0[phi,dd,z,a] yy0=y0[phi,dd,z,a] Psi[phi,DD,z] Out[7]= 0.0059 Out[7]= -0.50 Out[75]= 59.506 In[76]:= AffichageCadran[False,False,] Out[76]= -Graphics- Exemple In[77]:= phi=n[+8. Degree]; DD=N[0 Degree]; z=n[0 Degree]; a=; xx0=x0[phi,dd,z,a] yy0=y0[phi,dd,z,a] Psi[phi,DD,z] 5
Out[8]= 0 Out[8]= -0.890967 Out[8]= 8. In[8]:= AffichageCadran[False,False,] Out[8]= -Graphics- 6
Cadran analemmique In[85]:= NbreDelta=;delta=.; DataT={ CalculT[0,0,000], CalculT[0,0,000], CalculT[,0,000], CalculT[9,0,000], CalculT[09,0,000], CalculT[,0,000], CalculT[09,0,000], CalculT[,0,000], CalculT[0,0,000], CalculT[6,0,000], CalculT[0,05,000], CalculT[,05,000], CalculT[,05,000], CalculT[0,06,000], CalculT[,06,000], CalculT[,06,000], CalculT[0,07,000], CalculT[,07,000], CalculT[,07,000], CalculT[0,08,000], CalculT[,08,000], CalculT[8,08,000], CalculT[,09,000], CalculT[,09,000], CalculT[07,0,000], CalculT[0,0,000], CalculT[0,,000], CalculT[,,000], CalculT[,,000], CalculT[0,,000], CalculT[,,000], CalculT[,,000]}; DataDelta=delta[DataT]; DataEquTemps=EquTemps[DataT]; In[89]:= Analemmique[DecalageOuest,Details,Auto,Range ]:=( delta=.;h=.; NbreDelta=; NbreHeure=5; DataCadran=Table[{xx0,yy0},{NbreDelta NbreHeure}]; For[d=,d<=NbreDelta,d++, delta=n[datadelta[[d]] Degree]; DecalageET=N[DataEquTemps[[d]]]; For[h=,h<=NbreHeure,h++, H=N[(80 -(h-) 60/(NbreHeure-) -(DecalageOuest+DecalageET)) Degree]; If[Q[phi,DD,z,delta,H]>0, DataCadran[[h+ (d-)]]={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)/5],"; coordonnees: ", x[phi,dd,z,delta,h,a]," ; ", y[phi,dd,z,delta,h,a]]] ]]]; DataCadran=Join[DataCadran,{{xx0,yy0}}]; ListPlot[DataCadran, AspectRatio->, AxesOrigin->{0,0}, PlotRange->If[Auto,Automatic,{{-Range,Range},{-Range,Range}}]]) 7
Exemple 5 In[90]:= phi=n[+5 Degree]; DD=N[0 Degree]; z=n[0 Degree]; a=; xx0=x0[phi,dd,z,a] yy0=y0[phi,dd,z,a] Psi[phi,DD,z] Out[9]= 0 Out[95]= -.85 Out[96]= 5 In[97]:= Analemmique[.8,False,False,7] Out[97]= -Graphics- Pour Brest, taper: phi=n[+8. Degree];yy0=y0[phi,DD,z,a];Analemmique[.5,False,False,7] 8
Code avec Python # -*- coding: utf-8 -*- 0 0 0 0 9
0 0 0 0 6 0 6 6 0 6 0