Example #1
0
//Static methods

    ////////////////////////////////// Implementation /////////////////////////////

    public static double DeltaT(double JD)
    {
        //Construct a CAADate from the julian day
        DT date = DT.CreateJD(JD, DT.AfterPapalReformJD(JD));

        double y = date.FractionalYear();
        double T = (y - 2000) / 100;

        double Delta;

        if (y < 948)
        {
            Delta = 2177 + (497 * T) + (44.1 * T * T);
        }
        else if (y < 1620)
        {
            Delta = 102 + (102 * T) + (25.3 * T * T);
        }
        else if (y < 1998)
        {
            int Index = (int)((y - 1620) / 2);
            Debug.Assert(Index < GFX.DeltaTTable.Length);

            y     = y / 2 - Index - 810;
            Delta = (GFX.DeltaTTable[Index] + (GFX.DeltaTTable[Index + 1] - GFX.DeltaTTable[Index]) * y);
        }
        else if (y <= 2000)
        {
            int nLookupSize = GFX.DeltaTTable.Length;
            Delta = GFX.DeltaTTable[nLookupSize - 1];
        }
        else if (y < 2100)
        {
            Delta = 102 + (102 * T) + (25.3 * T * T) + 0.37 * (y - 2100);
        }
        else
        {
            Delta = 102 + (102 * T) + (25.3 * T * T);
        }

        return(Delta);
    }