/// <summary> /// Calculate dostance from the specified poin to the rectange /// </summary> public double Distance(PointRn point) { double d = 0; for (int i = 0, n = point.coords.Length; i < n; i++) { if (point.coords[i] < coords[i]) { d += (coords[i] - point.coords[i]) * (coords[i] - point.coords[i]); } else if (point.coords[i] > coords[n + i]) { d += (coords[n + i] - point.coords[i]) * (coords[n + i] - point.coords[i]); } } return Math.Sqrt(d); }
/// <summary> /// Construct rectangle with specified coordinates /// <param name="min">rectangle vertex with minimal coordinates</param> /// <param name="max">rectangle vertex with maximal coordinates</param> /// </summary> public RectangleRn(PointRn min, PointRn max) { int n = min.coords.Length; Debug.Assert(min.coords.Length == max.coords.Length); coords = new double[n * 2]; for (int i = 0; i < n; i++) { Debug.Assert(min.coords[i] <= max.coords[i]); coords[i] = min.coords[i]; coords[n + i] = max.coords[i]; } }
/// <summary> /// Calculate dostance from the specified poin to the rectange /// </summary> public double Distance(PointRn point) { double d = 0; for (int i = 0, n = point.coords.Length; i < n; i++) { if (point.coords[i] < coords[i]) { d += (coords[i] - point.coords[i]) * (coords[i] - point.coords[i]); } else if (point.coords[i] > coords[n + i]) { d += (coords[n + i] - point.coords[i]) * (coords[n + i] - point.coords[i]); } } return(Math.Sqrt(d)); }
/// <summary> /// Construct rectangle with specified coordinates /// <param name="min">rectangle vertex with minimal coordinates</param> /// <param name="max">rectangle vertex with maximal coordinates</param> /// </summary> public RectangleRn(PointRn min, PointRn max) { int n = min.coords.Length; Debug.Assert(min.coords.Length == max.coords.Length); coords = new double[n*2]; for (int i = 0; i < n; i++) { Debug.Assert(min.coords[i] <= max.coords[i]); coords[i] = min.coords[i]; coords[n+i] = max.coords[i]; } }