UNPKG

@antv/g2plot

Version:

G2 Plot, a market of plots built with the Grammar of Graphics'

71 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function getEndPoint(center, angle, r) { return { x: center.x + r * Math.cos(angle), y: center.y + r * Math.sin(angle), }; } exports.getEndPoint = getEndPoint; /** 获取矩形中点 */ function getCenter(box) { return { x: box.x + box.width / 2, y: box.y + box.height / 2, }; } exports.getCenter = getCenter; function getOverlapArea(a, b, margin) { if (margin === void 0) { margin = 0; } var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin)); var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin)); return xOverlap * yOverlap; } exports.getOverlapArea = getOverlapArea; /** * 计算两个矩形之间的堆叠情况 * @return xOverlap x方向重叠大小 * @return yOverlap y方向重叠大小 */ function getOverlapInfo(a, b, margin) { if (margin === void 0) { margin = 0; } var xOverlap = Math.max(0, Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin)); var yOverlap = Math.max(0, Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin)); // 添加 sign if (xOverlap && a.x < b.x) { xOverlap = -xOverlap; } if (yOverlap && a.y < b.y) { yOverlap = -yOverlap; } // 重叠 if (a.x === b.x && a.width === b.width) { xOverlap = b.width; } if (a.y === b.y && a.height === b.height) { yOverlap = b.height; } return { xOverlap: xOverlap, yOverlap: yOverlap }; } exports.getOverlapInfo = getOverlapInfo; /** * 粗略地判断是否在panel内部 * @param panel * @param shape */ function inPanel(panel, shape) { return (panel.x < shape.x && panel.x + panel.width > shape.x + shape.width && panel.y < shape.y && panel.y + panel.height > shape.y + shape.height); } exports.inPanel = inPanel; /** * 判断两个数值 是否接近 * - 解决精度问题(由于无法确定精度上限,根据具体场景可传入 精度 参数) */ exports.near = function (x, y, e) { if (e === void 0) { e = Math.pow(Number.EPSILON, 0.5); } return [x, y].includes(Infinity) ? Math.abs(x) === Math.abs(y) : Math.abs(x - y) < e; }; //# sourceMappingURL=index.js.map