"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vertical = exports.rotate = exports.normalize = exports.distance = exports.max = exports.min = exports.sub = exports.add = exports.scale = void 0; var tslib_1 = require("tslib"); /** * @param vec * @param s */ function scale(vec, s) { return [vec[0] * s, vec[1] * s]; } exports.scale = scale; function add(vec1, vec2) { return [vec1[0] + vec2[0], vec1[1] + vec2[1]]; } exports.add = add; function sub(vec1, vec2) { return [vec1[0] - vec2[0], vec1[1] - vec2[1]]; } exports.sub = sub; function min(vec1, vec2) { return [Math.min(vec1[0], vec2[0]), Math.min(vec1[1], vec2[1])]; } exports.min = min; function max(vec1, vec2) { return [Math.max(vec1[0], vec2[0]), Math.max(vec1[1], vec2[1])]; } exports.max = max; function distance(vec1, vec2) { return Math.sqrt(Math.pow((vec1[0] - vec2[0]), 2) + Math.pow((vec1[1] - vec2[1]), 2)); } exports.distance = distance; function normalize(vec) { if (vec[0] === 0 && vec[1] === 0) return [0, 0]; var len = Math.sqrt(Math.pow(vec[0], 2) + Math.pow(vec[1], 2)); return [vec[0] / len, vec[1] / len]; } exports.normalize = normalize; /** * 将给定向量围绕指定点旋转指定角度 * @param vec * @param origin 旋转中心 * @param angle 旋转角度,弧度制 */ function rotate(vec, origin, angle) { var _a = tslib_1.__read(vec, 2), x = _a[0], y = _a[1]; var _b = tslib_1.__read(origin, 2), ox = _b[0], oy = _b[1]; var dx = x - ox; var dy = y - oy; var sin = Math.sin(angle); var cos = Math.cos(angle); return [dx * cos - dy * sin + ox, dx * sin + dy * cos + oy]; } exports.rotate = rotate; function vertical(vec, flag) { return flag ? [vec[1], -vec[0]] : [-vec[1], vec[0]]; } exports.vertical = vertical; //# sourceMappingURL=matrix.js.map