/// <summary> /// Computes the rectangular coordinates for a target body at a given date and with the specified reference frame. /// </summary> /// <param name="targetDate">The target date.</param> /// <param name="solarSystemBody">The solar system body.</param> /// <param name="referenceFrame">The reference frame.</param> /// <returns>RectangularCoordinates expressed in Astronomical Units (AU).</returns> public static RectangularCoordinates ComputeRectangularCoordinates(double targetDate, SolarSystemBody solarSystemBody, ReferenceFrame referenceFrame) { var file = Vsop87DataReader.SelectDataFile(solarSystemBody, CoordinateSystem.HeliocentricRectangularCoordinates, referenceFrame); var vsop87SolutionData = Vsop87DataReader.LoadVsop87DataFromFile(file); var x = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['X']); var y = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['Y']); var z = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['Z']); return(new RectangularCoordinates(x, y, z)); }
/// <summary> /// Computes the spherical coordinates for a target body at a given date and with the specified reference /// frame. /// </summary> /// <param name="targetDate">The target date.</param> /// <param name="solarSystemBody">The solar system body.</param> /// <param name="referenceFrame">The reference frame.</param> /// <returns>SphericalCoordinates.</returns> public static SphericalCoordinates ComputeSphericalCoordinates(double targetDate, SolarSystemBody solarSystemBody, ReferenceFrame referenceFrame) { var file = Vsop87DataReader.SelectDataFile(solarSystemBody, CoordinateSystem.HeliocentricSphericalCoordinates, referenceFrame); var vsop87SolutionData = Vsop87DataReader.LoadVsop87DataFromFile(file); var latitude = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['L']); var longitude = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['B']); var radius = ComputeVsop87Series(targetDate, vsop87SolutionData.CoordinateVariableSeriesData['R']); return(new SphericalCoordinates(latitude, longitude, radius)); }