Skip to content
Snippets Groups Projects
Matrix.cs 2.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System;
    using System.Collections.Generic;
    
    namespace WindStressPRM
    {
        /// <summary>
        /// Generic Matrix of type T
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class Matrix<T>
        {
            /// <summary>
            /// Size of cell. In meters
            /// </summary>
            public CellSize Size { get; set; }
            /// <summary>
            /// Cells Container
            /// </summary>
            public T[,] Cells { get; set; }
            /// <summary>
            /// Number of rows in matrix
            /// </summary>
            /// <returns></returns>
            public int RowsCount()
            {
                return Cells.Rank > 0 ? Cells.GetLength(0) : 0;
            }
            /// <summary>
            /// Number of columns 
            /// </summary>
            /// <returns></returns>
            public int ColumnCount()
            {
                return Cells.Rank > 1 ? Cells.GetLength(1) : 0;
            }
        }
        /// <summary>
        /// Cell Sizes
        /// Параметры ячейки (регулярной сетки)
        /// </summary>
        public class CellSize
        {
            /// <summary>
            /// ширина ячейки (расстояние между соседними по широте центрами ячеек)
            /// </summary>
            public double Width { get; set; }
            /// <summary>
            /// высота ячейки (расстояние между соседними по долготе центрами ячеек)
            /// </summary>
            public double Height { get; set; }
            /// <summary>
            /// designated constructor
            /// </summary>
            /// <param name="wdh">Cell Width</param>
            /// <param name="hgh">Cell Height</param>
            public CellSize(double wdh, double hgh)
            {
                this.Width = wdh;
                this.Height = hgh;
                if (!(this.CheckValue()))
                {
                    throw new System.ArgumentException("Cell width or height values are incorrect!");
                }
            }
            /// <summary>
            /// Проверка валидности полей
            /// </summary>
            /// <returns></returns>
            public bool CheckValue()
            {
                return Width > 0 && Height > 0;
            }
        }
    }