/* * 原始坐标系的点转换到当前坐标系的点(可能旋转、移动、镜像过) */ 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 }; }