示例#1
0
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
示例#2
0
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
示例#3
0
 def test_coordonnees_moyennes3(self):
     afficher_calculs = False
     RA = (incert.i(10) + incert.i(9) / 60 + incert.i("32.47") / 3600) * 15
     DE = incert.i(11) + incert.i(51) / 60 + incert.i("31.9") / 3600
     reponses = {'RAf (°)': RA, 'DEf (°)': DE}
     resultat = coordonnees_moyennes3(3982, 2022.0)
     if afficher_calculs:
         print()
         print("*************************************")
         print("*     test_coordonnees_moyennes3    *")
         print("*************************************")
         for ligne in resultat['calculs']:
             print(ligne)
         print('RAf (h) :', incert.tosexag(resultat['RAf (°)'] / 15))
         print('DEf (°) :', incert.tosexag(resultat['DEf (°)']))
     del resultat['calculs']
示例#4
0
 def test_parametres_precession(self):
     afficher_calculs = False
     reponses = [{
         'm_alpha (s)': 3.071,
         'n_alpha (s)': 1.337,
         'n_delta (")': 20.06
     }, {
         'm_alpha (s)': 3.073,
         'n_alpha (s)': 1.337,
         'n_delta (")': 20.05
     }, {
         'm_alpha (s)': 3.075,
         'n_alpha (s)': 1.336,
         'n_delta (")': 20.04
     }, {
         'm_alpha (s)': 3.077,
         'n_alpha (s)': 1.336,
         'n_delta (")': 20.03
     }, {
         'm_alpha (s)': 3.079,
         'n_alpha (s)': 1.335,
         'n_delta (")': 20.03
     }]
     resultat = []
     if afficher_calculs:
         print()
         print("**************************************")
         print("*     test_parametres_precession     *")
         print("**************************************")
     for i in range(-2, 3):
         parametres_i = parametres_precession(incert.i(i))
         resultat.append(parametres_i)
         if afficher_calculs:
             print('----------- siècle :', 2000 + 100 * i)
             print('m_alpha (s) :', parametres_i['m_alpha (s)'])
             print('n_alpha (s) :', parametres_i['n_alpha (s)'])
             print('n_delta (") :', parametres_i['n_delta (")'])
     self.assertEqual(reponses, resultat)
示例#5
0
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
示例#6
0
 def test_rotations(self):
     afficher_calculs = False
     reponses = {}
     reponse = vecteur(incert.i(3), incert.i(-2), incert.i(1))
     U0 = vecteur(incert.i(1), incert.i(2), incert.i(3))
     U1 = rotation1(incert.pi/2, U0)
     reponse1 = vecteur(incert.i(1), incert.i(3), incert.i(-2))
     self.assertTrue(egalite_vecteurs(U1, reponse1))
     U2 = rotation2(incert.pi/2, U0)
     reponse2 = vecteur(incert.i(-3), incert.i(2), incert.i(1))
     self.assertTrue(egalite_vecteurs(U2, reponse2))
     U3 = rotation3(incert.pi/2, U0)
     reponse3 = vecteur(incert.i(2), incert.i(-1), incert.i(3))
     self.assertTrue(egalite_vecteurs(U3, reponse3))