vue-poster-editor
Version:
A poster editor based on Vue.js
73 lines (65 loc) • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
clamp: function clamp(val) {
var lower = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -Infinity;
var upper = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;
return Math.max(lower, Math.min(val, upper));
},
getVectorRotator: function getVectorRotator(a) {
var _ref = [Math.sin(a / 180 * Math.PI), Math.cos(a / 180 * Math.PI)],
sinA = _ref[0],
cosA = _ref[1];
return function (x, y) {
var invert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
return invert ? [x * cosA - y * sinA, x * sinA + y * cosA] : [x * cosA + y * sinA, -x * sinA + y * cosA];
};
},
radToDeg: function radToDeg(rad) {
return rad * 180 / Math.PI;
},
degToRad: function degToRad(deg) {
return deg * Math.PI / 180;
},
intLimit: function intLimit(int, circle) {
return (int % circle + circle) % circle;
},
getAngle: function getAngle(x2, y2, x1, y1, degOffset) {
var rad = Math.atan2(y2 - y1, x2 - x1);
var deg = rad * 180 / Math.PI;
deg -= degOffset;
return this.intLimit(deg, 360);
},
getRadius: function getRadius(dx, dy) {
return Math.sqrt(dx * dx + dy * dy);
},
getDxyByAngle: function getDxyByAngle(dx, dy, angle) {
var dis = this.getRadius(dx, dy);
var theta = Math.atan2(dy, dx) - angle * Math.PI / 180;
return {
dx: dis * Math.cos(theta),
dy: dis * Math.sin(theta)
};
},
getRotationPoint: function getRotationPoint(point, radian) {
var x = point.x;
var y = point.y;
var sin = Math.sin(radian);
var cos = Math.cos(radian);
return {
x: x * cos - y * sin,
y: x * sin + y * cos
};
},
getSkewPoint: function getSkewPoint(point, base, skewX, skewY) {
var dx = point.x - base.x;
var dy = point.y - base.y;
return {
x: base.x + (dx + Math.tan(skewX) * dy),
y: base.y + (dy + Math.tan(skewY) * dx)
};
}
};
module.exports = exports["default"];