Re: Mesure de la déclinaison et de l’inclinaison d’une surface
Posté : lun. 6 avr. 2020 21:33
Bien sûr, c'est intéressant ! Merci d'avance !
Forum d'échange et de partage sur les cadrans solaires
https://gnomonique.fr/forum/
Code : Tout sélectionner
public double ephe(Instant t, Rotation r, boolean bl) {
final double km = 0.017202;
final double kl = 0.01720279;
final double jm = 308.46;
final double jl = 21.043;
final double e = 0.0167;
double j = t.jouru() - 18322;
double m = km*(j - jm);
double l = kl*(j - jl);
double s = l + 2*e*Math.sin(m) + 1.25*e*e*Math.sin(2*m);
r.setXYZ(Math.cos(s), Math.cos(ob)*Math.sin(s), Math.sin(ob)*Math.sin(s));
if (bl)
r.rotz(l);
return Math.toDegrees(Math.atan2(r.y, r.x))/15;
}
Code : Tout sélectionner
# coding: utf-8
from math import *
def Rot(x, y, r):
return cos(r)*x + sin(r)*y, -sin(r)*x + cos(r)*y
# Données d'entrée
an = 2021 # Année
mo = 5 # Mois
jo = 16 # Jour
hc = 22 # Heure civile
mn = 54 # Minute
sc = 40 # Seconde
fo = 2 # fuseau horaire
lo = -2.11 # Longitude en °, positive à l'ouest
la = 49.06 # Latitude en °, positive au nord
# Constantes
km = 0.017202 # Vitesse angulaire de l’anomalie moyenne en radian/jour
jm = 308.46 # Date où l’anomalie est nulle (3 janv. 2021 à 11:02:24)
kl = 0.01720279 # Vitesse angulaire de la longitude moyenne en radian/jour
jl = 21.043 # Date où la longitude moyenne est nulle (22 mars 2020 à 01:01:55)
e = 0.0167 # Exentricité de l'orbite terrestre
ob = 0.4091 # Obliquité de l'écliptique en radian
# Calculs
if mo < 3:
an = an - 1
mo = mo + 12
fj = (3600*(hc - fo) + 60*mn + sc)/86400.0
jhu = int(365.25*an) + int(30.61*(mo + 1)) + jo + fj - 737928
m = km*(jhu - jm) # Anomalie moyenne en radian
l = kl*(jhu - jl) # Longitude moyenne en radian
s = l + 2*e*sin(m) + 1.25*e*e*sin(2*m) # Longitude vraie en radian
x, y, z = cos(s), sin(s), 0 # Passage en coordonnées cartésiennes
y, z = Rot(y, z, -ob) # Coordonnées équatoriales
x, y = Rot(x, y, l + 2*pi*(fj - 0.5) - pi*lo/180) # Coordonnées horaires
print('Angle horaire : %.2f dg'%(180*atan2(-y, x)/pi))
print('Declinaison : %.2f dg'%(180*asin(z)/pi))
z, x = Rot(z, x, pi*(90 - la)/180) # Coordonnées locales
print('Azimut : %.2f dg'%(180*atan2(-y, x)/pi))
print('Hauteur sans correction de la refraction: %.2f dg'%(180*asin(z)/pi))
Code : Tout sélectionner
jhu = 365*an + an//4 - an//100 + an//400 + int(30.61*(mo + 1)) + jo + fj - 737913