UNPKG

@logicflow/extension

Version:
65 lines (64 loc) 2.6 kB
import LogicFlow, { BaseEdgeModel, BaseNodeModel, BezierEdgeModel } from '@logicflow/core'; import Point = LogicFlow.Point; import LabelConfig = LogicFlow.LabelConfig; export type BBoxInfo = { x: number; y: number; width: number; height: number; }; export declare function calcPointAfterResize(origin: BBoxInfo, scaled: BBoxInfo, point: Point): Point; export declare function rotatePointAroundCenter(target: Point, center: Point, radian: number): Point; /** Edge 相关工具方法 */ /** * 获取某点在一个矩形图形(节点 or 边的 outline)内的偏移量 * @param point 目标点(此处即 Label 的坐标信息) * @param element 目标元素 */ export declare const getPointOffsetOfElementOutline: (point: Point, element: BaseNodeModel | BaseEdgeModel) => { xDeltaPercent: number; yDeltaPercent: number; xDeltaDistance: number; yDeltaDistance: number; } | undefined; /** * 给定一个点 P = (x_0, y_0) 和线段的两个端点 A = (x_1, y_1) 和 B = (x_2, y_2) ,可以使用以下步骤计算点到线段的距离: * 1. 计算向量 AB 和 AP 。 * 2. 计算 AB 的平方长度。 * 3. 计算点 P 在直线 AB 上的投影点 Q 。 * 4. 判断 Q 是否在线段 AB 上。 * 5. 根据 Q 是否在线段上,计算点到线段的距离。 * * 计算点到线段质检的距离 * @param point * @param start * @param end */ export declare const pointToSegmentDistance: (point: Point, start: Point, end: Point) => number; export declare const calcPolylineTotalLength: (points: Point[]) => number; /** * TODO: 确认该函数的意义,写完还是没看懂什么意思 * @param point * @param points */ export declare const pointPositionRatio: (point: Point, points: Point[]) => number; /** * 计算一个坐标在贝塞尔曲线上最近的一个点 * @param point * @param edge * @param step */ export declare const calcClosestPointOnBezierEdge: (point: Point, edge: BezierEdgeModel, step?: number) => Point; export declare const getNewPointAtDistance: (points: Point[], ratio: number) => Point | undefined; /** * 计算一个坐标离折线(包括 PolylineEdge 和 LineEdge 直线)最近的一个点 * @param point * @param edge */ export declare const calcLabelPositionOnPolyline: (point: Point, edge: BaseEdgeModel) => Point; /** * 计算 Label 离边最近的点的坐标,用于更新为 Label 的坐标 * @param label LabelConfig -> 当前 Label 的配置项 * @param edge */ export declare const getLabelPositionOfLine: (label: LabelConfig, edge: BaseEdgeModel) => Point;