/// <summary> /// Creates a proxy class of the specified Vec*d /// </summary> /// <param name="vec"></param> /// <returns></returns> public static InputArray Create(IVec <double> vec) { if (vec == null) { throw new ArgumentNullException(nameof(vec)); } if (vec is Vec2d v2) { return(new InputArray(new [] { v2.Item0, v2.Item1 })); } if (vec is Vec3d v3) { return(new InputArray(new [] { v3.Item0, v3.Item1, v3.Item2 })); } if (vec is Vec4d v4) { return(new InputArray(new [] { v4.Item0, v4.Item1, v4.Item2, v4.Item3 })); } if (vec is Vec6d v6) { return(new InputArray(new [] { v6.Item0, v6.Item1, v6.Item2, v6.Item3, v6.Item4, v6.Item5 })); } throw new ArgumentException($"Not supported type: '{vec.GetType().Name}'", nameof(vec)); }
/// <summary> /// Creates a proxy class of the specified Vec*b /// </summary> /// <param name="vec"></param> /// <returns></returns> public static InputArray Create(IVec vec) { if (vec == null) { throw new ArgumentNullException(nameof(vec)); } return(vec switch { Vec2b v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3b v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4b v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6b v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), Vec2s v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3s v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4s v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6s v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), Vec2w v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3w v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4w v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6w v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), Vec2i v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3i v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4i v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6i v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), Vec2f v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3f v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4f v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6f v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), Vec2d v => new InputArray(new[] { v.Item0, v.Item1 }), Vec3d v => new InputArray(new[] { v.Item0, v.Item1, v.Item2 }), Vec4d v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3 }), Vec6d v => new InputArray(new[] { v.Item0, v.Item1, v.Item2, v.Item3, v.Item4, v.Item5 }), _ => throw new ArgumentException($"Not supported type: '{vec.GetType().Name}'", nameof(vec)) });