/// <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));
        }