public static MathTransform CreateTranslationTransform (this ITriadManipulator m, swTriadManipulatorControlPoints_e h, IMathUtility math, double value) { MathVector translVector = null; switch (h) { case swTriadManipulatorControlPoints_e.swTriadManipulatorOrigin: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorXAxis: translVector = (MathVector)math.CreateVector(new[] {value, 0, 0}); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorYAxis: translVector = (MathVector)math.CreateVector(new[] {0, value, 0}); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorZAxis: translVector = (MathVector)math.CreateVector(new[] {0, 0, value}); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorXYPlane: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorYZPlane: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorZXPlane: break; default: throw new ArgumentOutOfRangeException(nameof(h), h, null); } if (translVector == null) return null; return math.ComposeTransform(m.XAxis, m.YAxis, m.ZAxis, translVector, 1.0); }
/// <summary> /// 创建变换矩阵 /// </summary> /// <param name="m"></param> /// <param name="h"></param> /// <param name="math"></param> /// <param name="value"></param> /// <returns></returns> public static MathTransform CreateTranslationTransform (this ITriadManipulator m, swTriadManipulatorControlPoints_e h, IMathUtility math, double value) { MathVector translVector = null; switch (h) { case swTriadManipulatorControlPoints_e.swTriadManipulatorOrigin: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorXAxis: translVector = (MathVector)math.CreateVector(new[] { value, 0, 0 }); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorYAxis: translVector = (MathVector)math.CreateVector(new[] { 0, value, 0 }); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorZAxis: translVector = (MathVector)math.CreateVector(new[] { 0, 0, value }); break; case swTriadManipulatorControlPoints_e.swTriadManipulatorXYPlane: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorYZPlane: break; case swTriadManipulatorControlPoints_e.swTriadManipulatorZXPlane: break; default: throw new ArgumentOutOfRangeException(nameof(h), h, null); } if (translVector == null) { return(null); } return(math.ComposeTransform(m.XAxis, m.YAxis, m.ZAxis, translVector, 1.0)); }
public static MathTransform IdentityTransform(this IMathUtility math) { return(math.ComposeTransform(math.Vector(new double[] { 0, 0, 0 }))); }
public static MathTransform ComposeTransform(this IMathUtility math, MathVector translate, double scale = 1.0) { return(math.ComposeTransform(math.XAxis(), math.YAxis(), math.ZAxis(), translate, scale)); }