//Returns the next time at which the orbiting object will cross the equator //moving southward, if o is east-moving, or northward, if o is west-moving. //For elliptical orbits this is a time between UT and UT + o.period. //For hyperbolic orbits this can by any time, including a time in the past if the //descending node is in the past. //NOTE: this function will throw an ArgumentException if o is a hyperbolic orbit and the //"descending node" occurs at a true anomaly that o does not actually ever attain. public static double TimeOfDescendingNodeEquatorial(this Orbit o, double UT) { return(o.TimeOfTrueAnomaly(o.DescendingNodeEquatorialTrueAnomaly(), UT)); }
//Returns whether o has a descending node with the equator. This can be false //if o is hyperbolic and the would-be descending node is within the opening //angle of the hyperbola. public static bool DescendingNodeEquatorialExists(this Orbit o) { return(Math.Abs(MuUtils.ClampDegrees180(o.DescendingNodeEquatorialTrueAnomaly())) <= o.MaximumTrueAnomaly()); }