@antv/g2plot
Version:
G2 Plot, a market of plots built with the Grammar of Graphics'
71 lines • 2.45 kB
JavaScript
;
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