Esempio n. 1
0
  public static void getAstroValuesByDay(
      double julianDay, final Location loc, Astro astro, Astro topAstro) {
    AstroDay ad = new AstroDay();

    if (astro.getJd() == julianDay - 1) {
      astro.getRa()[0] = astro.getRa()[1];

      astro.getRa()[1] = astro.getRa()[2];
      astro.getDec()[0] = astro.getDec()[1];
      astro.getDec()[1] = astro.getDec()[2];
      astro.getSid()[0] = astro.getSid()[1];
      astro.getSid()[1] = astro.getSid()[2];
      astro.getDra()[0] = astro.getDra()[1];
      astro.getDra()[1] = astro.getDra()[2];
      astro.getRsum()[0] = astro.getRsum()[1];
      astro.getRsum()[1] = astro.getRsum()[2];
      computeAstroDay(julianDay + 1, ad);
      astro.getRa()[2] = ad.getRa();
      astro.getDec()[2] = ad.getDec();
      astro.getSid()[2] = ad.getSidtime();
      astro.getDra()[2] = ad.getDra();
      astro.getRsum()[2] = ad.getRsum();
    } else if (astro.getJd() == julianDay + 1) {

      astro.getRa()[2] = astro.getRa()[1];
      astro.getRa()[1] = astro.getRa()[0];
      astro.getDec()[2] = astro.getDec()[1];
      astro.getDec()[1] = astro.getDec()[0];
      astro.getSid()[2] = astro.getSid()[1];
      astro.getSid()[1] = astro.getSid()[0];
      astro.getDra()[2] = astro.getDra()[1];
      astro.getDra()[1] = astro.getDra()[0];
      astro.getRsum()[2] = astro.getRsum()[1];
      astro.getRsum()[1] = astro.getRsum()[0];
      computeAstroDay(julianDay - 1, ad);
      astro.getRa()[0] = ad.getRa();
      astro.getDec()[0] = ad.getDec();
      astro.getSid()[0] = ad.getSidtime();
      astro.getDra()[0] = ad.getDra();
      astro.getRsum()[0] = ad.getRsum();
    } else if (astro.getJd() != julianDay) {
      computeAstroDay(julianDay - 1, ad);
      astro.getRa()[0] = ad.getRa();
      astro.getDec()[0] = ad.getDec();
      astro.getSid()[0] = ad.getSidtime();
      astro.getDra()[0] = ad.getDra();
      astro.getRsum()[0] = ad.getRsum();
      computeAstroDay(julianDay, ad);
      astro.getRa()[1] = ad.getRa();
      astro.getDec()[1] = ad.getDec();
      astro.getSid()[1] = ad.getSidtime();
      astro.getDra()[1] = ad.getDra();
      astro.getRsum()[1] = ad.getRsum();
      computeAstroDay(julianDay + 1, ad);
      astro.getRa()[2] = ad.getRa();
      astro.getDec()[2] = ad.getDec();
      astro.getSid()[2] = ad.getSidtime();
      astro.getDra()[2] = ad.getDra();
      astro.getRsum()[2] = ad.getRsum();
    }

    astro.setJd(julianDay);
    computeTopAstro(loc, astro, topAstro);
  }
Esempio n. 2
0
  public static void computeAstroDay(double JD, AstroDay astroday) {

    int i = 0;
    double R, Gg, G;

    double tL, L;
    double tB, B;

    double X0, X1, X2, X3, X4;

    double U, E0, E, lamda, V0, V;

    double RAn, RAd, RA, DEC;

    double B0sum = 0, B1sum = 0;
    double R0sum = 0, R1sum = 0, R2sum = 0, R3sum = 0, R4sum = 0;
    double L0sum = 0, L1sum = 0, L2sum = 0, L3sum = 0, L4sum = 0, L5sum = 0;

    double xsum = 0, psi = 0, epsilon = 0;
    double deltaPsi, deltaEps;

    double JC = (JD - 2451545) / 36525.0;
    double JM = JC / 10.0;
    double JM2 = Math.pow(JM, 2);
    double JM3 = Math.pow(JM, 3);
    double JM4 = Math.pow(JM, 4);
    double JM5 = Math.pow(JM, 5);

    for (i = 0; i < 64; i++) L0sum += L0[i][0] * Math.cos(L0[i][1] + L0[i][2] * JM);
    for (i = 0; i < 34; i++) L1sum += L1[i][0] * Math.cos(L1[i][1] + L1[i][2] * JM);
    for (i = 0; i < 20; i++) L2sum += L2[i][0] * Math.cos(L2[i][1] + L2[i][2] * JM);
    for (i = 0; i < 7; i++) L3sum += L3[i][0] * Math.cos(L3[i][1] + L3[i][2] * JM);
    for (i = 0; i < 3; i++) L4sum += L4[i][0] * Math.cos(L4[i][1] + L4[i][2] * JM);
    L5sum = L5[0][0] * Math.cos(L5[0][1] + L5[0][2] * JM);

    tL =
        (L0sum + (L1sum * JM) + (L2sum * JM2) + (L3sum * JM3) + (L4sum * JM4) + (L5sum * JM5))
            / Math.pow(10, 8);

    L = limitAngle(Utils.RAD_TO_DEG(tL));

    for (i = 0; i < 5; i++) B0sum += B0[i][0] * Math.cos(B0[i][1] + B0[i][2] * JM);
    for (i = 0; i < 2; i++) B1sum += B1[i][0] * Math.cos(B1[i][1] + B1[i][2] * JM);

    tB = (B0sum + (B1sum * JM)) / Math.pow(10, 8);
    B = Utils.RAD_TO_DEG(tB);

    for (i = 0; i < 40; i++) R0sum += R0[i][0] * Math.cos(R0[i][1] + R0[i][2] * JM);
    for (i = 0; i < 10; i++) R1sum += R1[i][0] * Math.cos(R1[i][1] + R1[i][2] * JM);
    for (i = 0; i < 6; i++) R2sum += R2[i][0] * Math.cos(R2[i][1] + R2[i][2] * JM);
    for (i = 0; i < 2; i++) R3sum += R3[i][0] * Math.cos(R3[i][1] + R3[i][2] * JM);

    R4sum = R4[0] * Math.cos(R4[1] + R4[2] * JM);

    R = (R0sum + (R1sum * JM) + (R2sum * JM2) + (R3sum * JM3) + (R4sum * JM4)) / Math.pow(10, 8);

    G = limitAngle((L + 180));
    Gg = -B;

    X0 =
        297.85036
            + (445267.111480 * JC)
            - (0.0019142 * Math.pow(JC, 2))
            + Math.pow(JC, 3) / 189474.0;
    X1 =
        357.52772
            + (35999.050340 * JC)
            - (0.0001603 * Math.pow(JC, 2))
            - Math.pow(JC, 3) / 300000.0;
    X2 =
        134.96298
            + (477198.867398 * JC)
            + (0.0086972 * Math.pow(JC, 2))
            + Math.pow(JC, 3) / 56250.0;
    X3 =
        93.27191
            + (483202.017538 * JC)
            - (0.0036825 * Math.pow(JC, 2))
            + Math.pow(JC, 3) / 327270.0;
    X4 =
        125.04452 - (1934.136261 * JC) + (0.0020708 * Math.pow(JC, 2)) + Math.pow(JC, 3) / 450000.0;

    for (i = 0; i < 63; i++) {
      xsum += X0 * SINCOEFF[i][0];
      xsum += X1 * SINCOEFF[i][1];
      xsum += X2 * SINCOEFF[i][2];
      xsum += X3 * SINCOEFF[i][3];
      xsum += X4 * SINCOEFF[i][4];
      psi += (PE[i][0] + JC * PE[i][1]) * Math.sin(Utils.DEG_TO_RAD(xsum));
      epsilon += (PE[i][2] + JC * PE[i][3]) * Math.cos(Utils.DEG_TO_RAD(xsum));
      xsum = 0;
    }

    deltaPsi = psi / 36000000.0;
    deltaEps = epsilon / 36000000.0;

    U = JM / 10.0;
    E0 =
        84381.448
            - 4680.93 * U
            - 1.55 * Math.pow(U, 2)
            + 1999.25 * Math.pow(U, 3)
            - 51.38 * Math.pow(U, 4)
            - 249.67 * Math.pow(U, 5)
            - 39.05 * Math.pow(U, 6)
            + 7.12 * Math.pow(U, 7)
            + 27.87 * Math.pow(U, 8)
            + 5.79 * Math.pow(U, 9)
            + 2.45 * Math.pow(U, 10);
    E = E0 / 3600.0 + deltaEps;
    lamda = G + deltaPsi + (-20.4898 / (3600.0 * R));

    V0 =
        280.46061837
            + 360.98564736629 * (JD - 2451545)
            + 0.000387933 * Math.pow(JC, 2)
            - Math.pow(JC, 3) / 38710000.0;
    V = limitAngle(V0) + deltaPsi * Math.cos(Utils.DEG_TO_RAD(E));

    RAn =
        Math.sin(Utils.DEG_TO_RAD(lamda)) * Math.cos(Utils.DEG_TO_RAD(E))
            - Math.tan(Utils.DEG_TO_RAD(Gg)) * Math.sin(Utils.DEG_TO_RAD(E));
    RAd = Math.cos(Utils.DEG_TO_RAD(lamda));
    RA = limitAngle(Utils.RAD_TO_DEG(Math.atan2(RAn, RAd)));

    DEC =
        Math.asin(
            Math.sin(Utils.DEG_TO_RAD(Gg)) * Math.cos(Utils.DEG_TO_RAD(E))
                + Math.cos(Utils.DEG_TO_RAD(Gg))
                    * Math.sin(Utils.DEG_TO_RAD(E))
                    * Math.sin(Utils.DEG_TO_RAD(lamda)));

    astroday.setRa(RA);
    astroday.setDec(DEC);
    astroday.setSidtime(V);
    astroday.setDra(0);
    astroday.setRsum(R);
  }