/// <summary>
        ///
        /// </summary>
        /// <param name="shear"></param>
        /// <returns></returns>
        public static TransformMatrix2d HorizontalShearingTransform(Double shear)
        {
            TransformMatrix2d result = (TransformMatrix2d)DoubleMatrix.Identity(2);

            result[1, 0] = shear;
            return(result);
        }
 public static Double FittingError(
     Point2dCollection sourcePoints,
     Point2dCollection targetPoints,
     TransformMatrix2d transform)
 {
     return(0);
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="shear"></param>
        /// <returns></returns>
        public static TransformMatrix2d VerticalShearingTransform(Double shear)
        {
            TransformMatrix2d result = (TransformMatrix2d)DoubleMatrix.Identity(2);

            result[0, 1] = shear;
            return(result);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="scale"></param>
        /// <returns></returns>
        public static TransformMatrix2d ScalingTransform(Double scale)
        {
            TransformMatrix2d result = new TransformMatrix2d();

            result[0, 0] = scale;
            result[1, 1] = scale;
            return(result);
        }
        /*************************/
        /* PUBLIC STATIC METHODS */
        /*************************/

        /// <summary>
        ///
        /// </summary>
        /// <param name="angle">Counterclockwise rotation angle in radians</param>
        /// <returns></returns>
        public static TransformMatrix2d RotationTransform(Double angleRadians)
        {
            TransformMatrix2d result = new TransformMatrix2d();

            result[0, 0] = Math.Cos(angleRadians);
            result[1, 0] = -Math.Sin(angleRadians);
            result[0, 1] = Math.Sin(angleRadians);
            result[1, 1] = Math.Cos(angleRadians);
            return(result);
        }