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