/// <summary> /// /// </summary> public static void NormalizeColumns(ReadOnlyArrayView <Vector2d> matrix, Interval2d interval, ArrayView <Vector2d> result) { for (int i = 0; i < matrix.Count; i++) { result[i] = interval.Normalize(matrix[i]); } }
/// <summary> /// /// </summary> public static void RemapColumns(ReadOnlyArrayView <Vector2d> matrix, Interval2d from, Interval2d to, ArrayView <Vector2d> result) { for (int i = 0; i < matrix.Count; i++) { result[i] = Interval2d.Remap(matrix[i], from, to); } }
/// <summary> /// /// </summary> public static void RemapColumns(ReadOnlyArrayView <Vector2d> matrix, Interval2d from, Interval2d to, ArrayView <Vector2d> result) { ForEach(new UniformPartitioner(0, matrix.Count), p => { for (int i = p.From; i < p.To; i++) { result[i] = Interval2d.Remap(matrix[i], from, to); } }); }
/// <summary> /// /// </summary> public static void EvaluateColumns(ReadOnlyArrayView <Vector2d> matrix, Interval2d interval, ArrayView <Vector2d> result) { ForEach(new UniformPartitioner(0, matrix.Count), p => { for (int i = p.From; i < p.To; i++) { result[i] = interval.Evaluate(matrix[i]); } }); }
/// <summary> /// Returns a random 2d vector which has components within the given interval /// </summary> /// <param name="random"></param> /// <param name="interval"></param> /// <returns></returns> public static Vector2d NextVector2d(this Random random, Interval2d interval) { return(new Vector2d( interval.X.Evaluate(random.NextDouble()), interval.Y.Evaluate(random.NextDouble()))); }
/// <summary> /// /// </summary> /// <param name="point"></param> /// <param name="from"></param> /// <param name="to"></param> /// <returns></returns> public static Vector2d Remap(Vector2d point, Interval2d from, Interval2d to) { point.X = Intervald.Remap(point.X, from.X, to.X); point.Y = Intervald.Remap(point.Y, from.Y, to.Y); return(point); }