UNPKG

@antv/g2

Version:

the Grammar of Graphics in Javascript

48 lines 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.intersectionAreaPath = void 0; const circleintersection_1 = require("./circleintersection"); /** * 根据圆心(x, y) 半径 r 返回圆的绘制 path * @param x 圆心点 x * @param y 圆心点 y * @param r 圆的半径 * @returns 圆的 path */ function circlePath(x, y, r) { const ret = []; // ret.push('\nM', x, y); // ret.push('\nm', -r, 0); // ret.push('\na', r, r, 0, 1, 0, r * 2, 0); // ret.push('\na', r, r, 0, 1, 0, -r * 2, 0); const x0 = x - r; const y0 = y; ret.push('M', x0, y0); ret.push('A', r, r, 0, 1, 0, x0 + 2 * r, y0); ret.push('A', r, r, 0, 1, 0, x0, y0); return ret.join(' '); } /** returns a svg path of the intersection area of a bunch of circles */ function intersectionAreaPath(circles) { const stats = {}; (0, circleintersection_1.intersectionArea)(circles, stats); const arcs = stats.arcs; if (arcs.length === 0) { return 'M 0 0'; } else if (arcs.length == 1) { const circle = arcs[0].circle; return circlePath(circle.x, circle.y, circle.radius); } else { // draw path around arcs const ret = ['\nM', arcs[0].p2.x, arcs[0].p2.y]; for (let i = 0; i < arcs.length; ++i) { const arc = arcs[i], r = arc.circle.radius, wide = arc.width > r; ret.push('\nA', r, r, 0, wide ? 1 : 0, 1, arc.p1.x, arc.p1.y); } return ret.join(' '); } } exports.intersectionAreaPath = intersectionAreaPath; //# sourceMappingURL=diagram.js.map