坐标系变换后重新计算点的坐标

/*
         * 原始坐标系的点转换到当前坐标系的点(可能旋转、移动、镜像过)
         */
        transforPoint: function (px, py) {
            if (!this._transform) {
                return;
            }

            var x = px, y = py;
            var m = this._transform;

            px = x * m[0] + y * m[2] + m[4];
            py = x * m[1] + y * m[3] + m[5];
            return { x: px, y: py };
        },

        /*
         * 当前状态是(旋转、移动、镜像)过的,变换到原始坐标系
         */
        deTransforPoint: function (px, py) {

            var x = px, y = py;

            var m = this._transform;
            if (0 == m[2]) {
                return {
                    x: ((x - m[4]) / m[0]),
                    y: ((y - m[5]) / m[3])
                }
            }

            px = (m[2] * (y - m[5]) - x * m[3] + m[4] * m[3]) / (m[1] * m[2] - m[0] * m[3]);

            py = (x - m[4] - px * m[0]) / m[2];

            return { x: px, y: py };
        }

  

原文地址:https://www.cnblogs.com/Farmer-D/p/4911823.html