//Static methods
    //Tangible Process Only End
    ////////////////////////////////// Implementation /////////////////////////////
    public static CAABinaryStarDetails Calculate(double t, double P, double T, double e, double a, double i, double omega, double w)
    {
        double n = 360 / P;
        double M = CAACoordinateTransformation.MapTo0To360Range(n*(t - T));
        double E = CAAKepler.Calculate(M, e);
        E = CAACoordinateTransformation.DegreesToRadians(E);
        i = CAACoordinateTransformation.DegreesToRadians(i);
        w = CAACoordinateTransformation.DegreesToRadians(w);
        omega = CAACoordinateTransformation.DegreesToRadians(omega);

        CAABinaryStarDetails details = new CAABinaryStarDetails();

        details.r = a*(1 - e *Math.Cos(E));

        double v = Math.Atan(Math.Sqrt((1 + e) / (1 - e)) * Math.Tan(E/2)) * 2;
        details.Theta = Math.Atan2(Math.Sin(v + w) * Math.Cos(i), Math.Cos(v + w)) + omega;
        details.Theta = CAACoordinateTransformation.MapTo0To360Range(CAACoordinateTransformation.RadiansToDegrees(details.Theta));

        double sinvw = Math.Sin(v + w);
        double cosvw = Math.Cos(v + w);
        double cosi = Math.Cos(i);
        details.Rho = details.r * Math.Sqrt((sinvw *sinvw *cosi *cosi) + (cosvw *cosvw));

        return details;
    }
//Static methods
//Tangible Process Only End


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

    public static CAABinaryStarDetails Calculate(double t, double P, double T, double e, double a, double i, double omega, double w)
    {
        double n = 360 / P;
        double M = CT.M360(n * (t - T));
        double E = CAAKepler.Calculate(M, e);

        E     = CT.D2R(E);
        i     = CT.D2R(i);
        w     = CT.D2R(w);
        omega = CT.D2R(omega);

        CAABinaryStarDetails details = new CAABinaryStarDetails();

        details.r = a * (1 - e * Math.Cos(E));

        double v = Math.Atan(Math.Sqrt((1 + e) / (1 - e)) * Math.Tan(E / 2)) * 2;

        details.Theta = Math.Atan2(Math.Sin(v + w) * Math.Cos(i), Math.Cos(v + w)) + omega;
        details.Theta = CT.M360(CT.R2D(details.Theta));

        double sinvw = Math.Sin(v + w);
        double cosvw = Math.Cos(v + w);
        double cosi  = Math.Cos(i);

        details.Rho = details.r * Math.Sqrt((sinvw * sinvw * cosi * cosi) + (cosvw * cosvw));

        return(details);
    }
    //Static methods
    //Tangible Process Only End
    ////////////////////////////////// Implementation /////////////////////////////
    public static CAABinaryStarDetails Calculate(double t, double P, double T, double e, double a, double i, double omega, double w)
    {
        double n = 360 / P;
        double M = CT.M360(n*(t - T));
        double E = CAAKepler.Calculate(M, e);
        E = CT.D2R(E);
        i = CT.D2R(i);
        w = CT.D2R(w);
        omega = CT.D2R(omega);

        CAABinaryStarDetails details = new CAABinaryStarDetails();

        details.r = a*(1 - e *Math.Cos(E));

        double v = Math.Atan(Math.Sqrt((1 + e) / (1 - e)) * Math.Tan(E/2)) * 2;
        details.Theta = Math.Atan2(Math.Sin(v + w) * Math.Cos(i), Math.Cos(v + w)) + omega;
        details.Theta = CT.M360(CT.R2D(details.Theta));

        double sinvw = Math.Sin(v + w);
        double cosvw = Math.Cos(v + w);
        double cosi = Math.Cos(i);
        details.Rho = details.r * Math.Sqrt((sinvw *sinvw *cosi *cosi) + (cosvw *cosvw));

        return details;
    }
//Static methods
//Tangible Process Only End


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

    public static CAABinaryStarDetails Calculate(double t, double P, double T, double e, double a, double i, double omega, double w)
    {
        double n = 360 / P;
        double M = CAACoordinateTransformation.MapTo0To360Range(n * (t - T));
        double E = CAAKepler.Calculate(M, e);

        E     = CAACoordinateTransformation.DegreesToRadians(E);
        i     = CAACoordinateTransformation.DegreesToRadians(i);
        w     = CAACoordinateTransformation.DegreesToRadians(w);
        omega = CAACoordinateTransformation.DegreesToRadians(omega);

        CAABinaryStarDetails details = new CAABinaryStarDetails();

        details.r = a * (1 - e * Math.Cos(E));

        double v = Math.Atan(Math.Sqrt((1 + e) / (1 - e)) * Math.Tan(E / 2)) * 2;

        details.Theta = Math.Atan2(Math.Sin(v + w) * Math.Cos(i), Math.Cos(v + w)) + omega;
        details.Theta = CAACoordinateTransformation.MapTo0To360Range(CAACoordinateTransformation.RadiansToDegrees(details.Theta));

        double sinvw = Math.Sin(v + w);
        double cosvw = Math.Cos(v + w);
        double cosi  = Math.Cos(i);

        details.Rho = details.r * Math.Sqrt((sinvw * sinvw * cosi * cosi) + (cosvw * cosvw));

        return(details);
    }