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