using System;
using System.Collections.Generic;

namespace WindStressPRM
{
    /// <summary>
    /// Coordinate pair
    /// пара координат, может быть рамерности: м, км, градус,  однако для всех экземпляров должна быть одной и той же.
    /// </summary>
    public class Coordinate
    {
        /// <summary>
        /// easting coordinate
        /// Координата по долготе/ X, (м, км, градус)
        /// </summary>
        public double X { get; private set; }
        /// <summary>
        /// northing coordinate
        /// Координата по широте/Y, (м, км, градус)
        /// </summary>
        public double Y { get; private set; }
        /// <summary>
        /// designated constructor
        /// Основной конструктор
        /// </summary>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        public Coordinate(double X, double Y)
        {
            this.X = X;
            this.Y = Y;
            this.CheckValue();
        }
        /// <summary>
        /// Проверка на валидность значений
        /// </summary>
        /// <returns></returns>
        private void CheckValue()
        {
            if (Double.IsNaN(X) || Double.IsInfinity(X))
            {
                throw new System.ArgumentOutOfRangeException("Coordinate.X is incorrect", X, "Expected X!=Nan, X!=INF");
            }
            if (Double.IsNaN(Y) || Double.IsInfinity(Y))
            {
                throw new System.ArgumentOutOfRangeException("Coordinate.Y is incorrect", Y, "Expected Y!=Nan, Y!=INF");
            }
        }
    }
}