UNPKG

@antv/g6

Version:

A Graph Visualization Framework in JavaScript

56 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CubicRadial = void 0; const position_1 = require("../../utils/position"); const style_1 = require("../../utils/style"); const vector_1 = require("../../utils/vector"); const cubic_1 = require("./cubic"); /** * <zh/> 径向贝塞尔曲线 * * <en/> Radial cubic edge */ class CubicRadial extends cubic_1.Cubic { constructor(options) { super((0, style_1.mergeOptions)({ style: CubicRadial.defaultStyleProps }, options)); } get ref() { return this.context.model.getRootsData()[0]; } getEndpoints(attributes) { if (this.sourceNode.id === this.ref.id) { return super.getEndpoints(attributes); } const refPoint = (0, position_1.positionOf)(this.ref); const sourcePoint = this.sourceNode.getIntersectPoint(refPoint, true); const targetPoint = this.targetNode.getIntersectPoint(refPoint); return [sourcePoint, targetPoint]; } toRadialCoordinate(p) { const refPoint = (0, position_1.positionOf)(this.ref); const r = (0, vector_1.distance)(p, refPoint); const radian = (0, vector_1.rad)((0, vector_1.subtract)(p, refPoint)); return [r, radian]; } getControlPoints(sourcePoint, targetPoint, curvePosition, curveOffset) { const [r1, rad1] = this.toRadialCoordinate(sourcePoint); const [r2] = this.toRadialCoordinate(targetPoint); const rDist = r2 - r1; return [ [ sourcePoint[0] + (rDist * curvePosition[0] + curveOffset[0]) * Math.cos(rad1), sourcePoint[1] + (rDist * curvePosition[0] + curveOffset[0]) * Math.sin(rad1), ], [ targetPoint[0] - (rDist * curvePosition[1] - curveOffset[0]) * Math.cos(rad1), targetPoint[1] - (rDist * curvePosition[1] - curveOffset[0]) * Math.sin(rad1), ], ]; } } exports.CubicRadial = CubicRadial; CubicRadial.defaultStyleProps = { curvePosition: 0.5, curveOffset: 20, }; //# sourceMappingURL=cubic-radial.js.map