@logicflow/extension
Version:
LogicFlow Extensions
65 lines (64 loc) • 2.6 kB
TypeScript
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;