def coordonnees_moyennes_rigoureuses(HR, A): """ Calcul rigoureux des coordonnées moyennes de l'étoile: en ascenscion droite et en déclinaison de pour l'année A. Entrée : HR = numéro de l'étoile A = Année Sortie : dictionnaire : 'calculs' = calculs intermédiaires pour débogage 'RAf (°)' = ascension droite (°) de 0 à 360° 'DEf (°)' = déclinaison (°) de -90 à +90° """ calculs = [] resultat = {} data = etoiles.etoile_data(HR) pmRA = incert.it(data.pmRA, 0) / 1000 calculs.append({'pmRA (as/y)': pmRA}) pmDE = incert.it(data.pmDE, 0) / 1000 calculs.append({'pmDE (as/y)': pmDE}) alpha = int(data.RAh) + incert.i(int(data.RAm)) / 60 alpha += incert.i(data.RAs) / 3600 alpha *= 15 calculs.append({'RA0 (°)': alpha}) delta = int(data.DEsgn + data.DEd) + incert.i(int(data.DEm)) / 60 delta += incert.i(data.DEs) / 3600 calculs.append({'DEC0 (°)': delta}) deltaA = incert.it(A - 2000, 0) calculs.append({'DeltaA (année)': deltaA}) alpha1 = (alpha + pmRA * deltaA / 3600) * incert.pi / 180 calculs.append({'alpha1 (°)': alpha1}) delta1 = (delta + pmDE * deltaA / 3600) * incert.pi / 180 calculs.append({'delta1 (°)': delta1}) t = deltaA / 100 calculs.append({'t (siècle)': t}) dzeta = (("2306.2181" * t + "0.30188" * t**2 + "0.017998" * t**3) / 3600) * incert.pi / 180 zed = (("2306.2181" * t + "1.09468" * t**2 + "0.018203" * t**3) / 3600) * incert.pi / 180 theta = (("2004.3109" * t + "0.42665" * t**2 + "0.041833" * t**3) / 3600) * incert.pi / 180 A = incert.cos(delta1) * incert.sin(alpha1 + dzeta) B = incert.cos(theta)*incert.cos(delta1)*incert.cos(alpha1 + dzeta) \ - incert.sin(theta)*incert.sin(delta1) C = incert.sin(theta)*incert.cos(delta1)*incert.cos(alpha1 + dzeta) \ + incert.cos(theta)*incert.sin(delta1) delta = incert.asin(C) calculs.append({'delta (°)': delta}) alpha = incert.atan2(A, B) + zed if (alpha.valeur < 0): alpha += 2 * incert.pi calculs.append({'alpha (°)': alpha}) resultat['calculs'] = calculs resultat['RAf (°)'] = alpha * 180 / incert.pi resultat['DEf (°)'] = delta * 180 / incert.pi return resultat
def coordonnees_moyennes2(HR, A): """ Calcul les coordonnées moyennes de l'étoile: en ascenscion droite et en déclinaison de pour l'année A première méthode matricielle. Entrée : HR = numéro de l'étoile A = Année Sortie : dictionnaire : 'calculs' = calculs intermédiaires pour débogage 'RAf (°)' = ascension droite (°) de 0 à 360° 'DEf (°)' = déclinaison (°) de -90 à +90° """ calculs = [] resultat = {} data = etoiles.etoile_data(HR) pmRA = incert.it(data.pmRA, 0) / 1000 calculs.append({'pmRA (as/y)': pmRA}) pmDE = incert.it(data.pmDE, 0) / 1000 calculs.append({'pmDE (as/y)': pmDE}) alpha = int(data.RAh) + incert.i(int(data.RAm)) / 60 alpha += incert.i(data.RAs) / 3600 alpha *= 15 calculs.append({'RA0 (°)': alpha}) delta = int(data.DEsgn + data.DEd) + incert.i(int(data.DEm)) / 60 delta += incert.i(data.DEs) / 3600 calculs.append({'DEC0 (°)': delta}) deltaA = incert.it(A - 2000, 0) calculs.append({'DeltaA (année)': deltaA}) S = deltaA / 100 calculs.append({'S (siècle)': S}) DS = deltaA / 1000 calculs.append({'DS (deca siècle)': DS}) RA1 = alpha + pmRA * deltaA / 3600 calculs.append({'RA1 (°)': RA1}) DE1 = delta + pmDE * deltaA / 3600 calculs.append({'DE1 (°)': DE1}) psi1 = RA1 * incert.pi / 180 phi1 = DE1 * incert.pi / 180 U1 = coord.xyzdepolaire(psi1, phi1, incert.un) calculs.append({'U1 (m)': U1}) parametres = coord.parametres_precession(DS) calculs += parametres['calculs'] U2 = coord.rotation3(-(parametres['zeta (")'] / 3600) * (incert.pi / 180), U1) U3 = coord.rotation2((parametres['theta (")'] / 3600) * (incert.pi / 180), U2) Uf = coord.rotation3(-(parametres['z (")'] / 3600) * (incert.pi / 180), U3) (psif, phif, rf) = coord.polairedexyz(Uf) if (psif.valeur < 0): psif += incert.pi * 2 resultat['calculs'] = calculs resultat['RAf (°)'] = psif * 180 / incert.pi resultat['DEf (°)'] = phif * 180 / incert.pi return resultat
def test_parametres_precession(self): afficher_calculs = False reponses = { 'epsilon (")': 84371.1487, 'omega (")': 84381.4448, 'psi (")': 1108.4134, 'khi (")': 2.2063, 'theta (")': 440.9273, 'zeta (")': 507.3828, 'z (")': 507.4212} t = incert.it(22/1000, 0) resultat = parametres_precession(t) if afficher_calculs: print() print("----------- test_parametres_precession") for ligne in resultat['calculs']: print(ligne) print('epsilon (") :', resultat['epsilon (")']) print('omega (") :', resultat['omega (")']) print('psi (") :', resultat['psi (")']) print('khi (") :', resultat['khi (")']) print('theta (") :', resultat['theta (")']) print('zeta (") :', resultat['zeta (")']) print('z (") :', resultat['z (")']) del resultat['calculs'] self.assertEqual(reponses, resultat)
def coordonnees_moyennes(HR, A): """ Calcul approximatif des coordonnées moyennes de l'étoile: en ascenscion droite et en déclinaison de pour l'année A. Entrée : HR = numéro de l'étoile A = Année Sortie : dictionnaire : 'calculs' = calculs intermédiaires pour débogage 'RAf (°)' = ascension droite (°) de 0 à 360° 'DEf (°)' = déclinaison (°) de -90 à +90° """ calculs = [] resultat = {} data = etoiles.etoile_data(HR) calculs.append({'pmRA (mas/y)': data.pmRA}) pmRA = incert.i(data.pmRA) / (15 * 1000) calculs.append({'pmRA (s/y)': pmRA}) calculs.append({'pmDE (mas/y)': data.pmDE}) pmDE = incert.i(data.pmDE) / 1000 calculs.append({'pmDE ("s/y)': pmDE}) alpha = int(data.RAh) + incert.i(int(data.RAm)) / 60 alpha += incert.i(data.RAs) / 3600 alpha *= 15 calculs.append({'RA0 (°)': alpha}) delta = int(data.DEsgn + data.DEd) + incert.i(int(data.DEm)) / 60 delta += incert.i(data.DEs) / 3600 calculs.append({'DEC0 (°)': delta}) deltaA = incert.it(A - 2000, 0) calculs.append({'DeltaA (année)': deltaA}) S = deltaA / 100 calculs.append({'S (siècle) ': S}) parametres = parametres_precession(S) m_alpha = parametres['m_alpha (s)'] n_alpha = parametres['n_alpha (s)'] n_delta = parametres['n_delta (")'] calculs.append({'m_alpha (s)': m_alpha}) calculs.append({'n_alpha (s)': n_alpha}) calculs.append({'n_delta (")': n_delta}) precRA = n_alpha * incert.sin(incert.pi * alpha / 180) precRA *= incert.tan(incert.pi * delta / 180) precRA += m_alpha calculs.append({'precRA (s)': precRA}) precDE = n_delta * incert.cos(incert.pi * alpha / 180) calculs.append({'precDE (")': precDE}) varRA = precRA + pmRA calculs.append({'varRA (s)': varRA}) varDE = precDE + pmDE calculs.append({'varDE (")': varDE}) calculs.append({'delta A (an)': deltaA}) varRAtot = varRA * deltaA calculs.append({'varRAtot (s)': varRAtot}) varDEtot = varDE * deltaA calculs.append({'varDEtot (")': varDEtot}) RAf = alpha + varRAtot * 15 / 3600 calculs.append({'RAf (°)': RAf}) DEf = delta + varDEtot / 3600 calculs.append({'DEf (°)': DEf}) resultat['calculs'] = calculs resultat['RAf (°)'] = RAf resultat['DEf (°)'] = DEf return resultat