/// <summary>
 /// Initialise a mount coordinate with Ra/Dec strings and axis positions in radians.
 /// </summary>
 /// <param name="altAz">The AltAzimuth coordinate for the mount</param>
 /// <param name="suggested">The suggested position for the axes (e.g. via a star catalogue lookup)</param>
 /// <param name="localTime">The local time of the observation</param>
 public MountCoordinate(string ra, string dec, IntegerPair axisPosition, Transform transform, double localJulianTimeUTC) : this(new EquatorialCoordinate(ra, dec))
 {
     _Equatorial        = new EquatorialCoordinate(ra, dec);
     _AltAzimuth        = this.GetAltAzimuth(transform, localJulianTimeUTC);
     _AxesPosition      = axisPosition;
     _AxisJulianTimeUTC = localJulianTimeUTC;
     _MasterCoordinate  = MasterCoordinateEnum.Equatorial;
 }
        /// <summary>
        /// Returns the RADec coordinate for the observed AltAzimuth using the values
        /// currently set in the passed Transform instance.
        /// </summary>
        /// <param name="transform"></param>
        /// <returns></returns>
        public EquatorialCoordinate GetEquatorial(Transform transform, double julianDateUTC)
        {
            transform.JulianDateUTC = julianDateUTC;
            transform.SetAzimuthElevation(_AltAzimuth.Azimuth, _AltAzimuth.Altitude);
            transform.Refresh();
            EquatorialCoordinate coord = new EquatorialCoordinate(transform.RATopocentric, transform.DECTopocentric);

            return(coord);
        }
示例#3
0
        /// <summary>
        ///  Obtains a vector in polar notation from the equatorial coordinates and the observation time.
        /// </summary>
        /// <param name="coord"></param>
        /// <param name="time"></param>
        /// <returns></returns>
        private Vector GetEVC(EquatorialCoordinate coord, double localSiderealTime)
        {
            double deltaTime = AstroConvert.HrsToRad((localSiderealTime - _timeZero));
            Vector evc       = new Vector(0.0, 0.0, 0.0);

            evc[0] = Math.Cos(coord.Declination.Radians) * Math.Cos(coord.RightAscension.Radians - (_k * deltaTime));
            evc[1] = Math.Cos(coord.Declination.Radians) * Math.Sin(coord.RightAscension.Radians - (_k * deltaTime));
            evc[2] = Math.Sin(coord.Declination.Radians);
            return(evc);
        }
        public void Refresh(EquatorialCoordinate equatorial, IntegerPair axisPosition, Transform transform, double localJulianTimeUTC)
        {
            _Equatorial.RightAscension.Value = equatorial.RightAscension.Value;
            _Equatorial.Declination.Value    = equatorial.Declination.Value;
            _AxesPosition = axisPosition;

            _LocalJulianTimeUTC = localJulianTimeUTC;
            RefreshAltAzimuth(transform, localJulianTimeUTC);
            _MasterCoordinate = MasterCoordinateEnum.Equatorial;
        }
示例#5
0
        public AxisPosition GetAxisPosition(EquatorialCoordinate eq, double targetSiderealTime)
        {
            Vector EVC = GetEVC(eq, targetSiderealTime);
            Vector HVC = new Vector(0.0, 0.0, 0.0);

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    HVC[i] += _T[i, j] * EVC[j];
                }
            }

            return(new AxisPosition(AstroConvert.Range2Pi(Math.Atan2(HVC[1], HVC[0])), AstroConvert.Range2Pi(Math.Asin(HVC[2]))));
        }
 /// <summary>
 /// Initialisation with an equatorial coordinate, a transform instance and the local julian time (corrected)
 /// which then means that the AltAzimunth at the time is available.
 /// </summary>
 public MountCoordinate(AltAzCoordinate altAz, Transform transform, double localJulianTimeUTC) : this(altAz)
 {
     _LocalJulianTimeUTC = localJulianTimeUTC;
     _Equatorial         = this.GetEquatorial(transform, localJulianTimeUTC);
 }
 /// <summary>
 /// Initialisation with an equatorial coordinate, a transform instance and the local julian time (corrected)
 /// which then means that the AltAzimunth at the time is available.
 /// </summary>
 public MountCoordinate(EquatorialCoordinate equatorial, Transform transform, double localJulianTimeUTC) : this(equatorial)
 {
     _AltAzimuth         = this.GetAltAzimuth(transform, localJulianTimeUTC);
     _LocalJulianTimeUTC = localJulianTimeUTC;
 }
 /// <summary>
 /// Simple initialisation with an equatorial coordinate
 /// </summary>
 public MountCoordinate(EquatorialCoordinate equatorial)
 {
     _Equatorial       = equatorial;
     _MasterCoordinate = MasterCoordinateEnum.Equatorial;
 }