import { Vector2 } from "three";
export declare function getAngle(vec0: Vector2, vec1: Vector2): number;
export declare function smoothPath(path: [number, number][], threshold?: number): [number, number][];
/**
 * 路径简化
 * @param path 路径点集数组
 * @param ignoreFirst 是否在简化过程中忽略第一个点
 * @param smoothingOptimization 是否针对平滑对路径进行插值
 * @param simplifyDistanceThreshold 简化时路径最短保留的距离, 默认为5
 * @param maximumTurningDegree 简化时三点夹角认定为转弯的最大角度，默认为150
 * @param smoothingDistance 平滑时使用的转角最大距离
 */
export declare function simplifyPath(path: [number, number][], ignoreFirst?: boolean, smoothingOptimization?: boolean, simplifyDistanceThreshold?: number, maximumTurningDegree?: number, smoothingDistance?: number): [number, number][];
/**
 * 对路径点做去重
 * @param points 路径点
 * @returns
 */
export declare function removeWeightPath(points: [number, number][]): [number, number][];
/**
 * 计算点在路线的最短距离和投影位置
 * @param point 点
 * @param start 路线起点
 * @param end 路线终点
 * @returns
 */
export declare function distancePointToSegment(point: [number, number], start: [number, number], end: [number, number]): {
    distance: number;
    closestPoint: [number, number];
};
/**
 * 计算路线的起点在路线上移动一定的距离后的点
 * @param startPoint
 * @param endPoint
 * @param distance
 * @returns
 */
export declare function moveOnRoute(startPoint: [number, number], endPoint: [number, number], distance: number): [number, number];
export declare enum PathDirection {
    START = "start",
    END = "end",
    FRONT = "front",
    RIGHT = "right",
    LEFT = "left",
    RIGHT_FRONT = "right_front",
    LEFT_FRONT = "left_front",
    RIGHT_BACK = "right_back",
    LEFT_BACK = "left_back"
}
export declare function calc_direction(p0: [number, number], p1: [number, number], p2: [number, number]): PathDirection.FRONT | PathDirection.RIGHT | PathDirection.LEFT | PathDirection.RIGHT_FRONT | PathDirection.LEFT_FRONT | PathDirection.RIGHT_BACK | PathDirection.LEFT_BACK;
export declare function getDirectionByAngle(angle: number): PathDirection.FRONT | PathDirection.RIGHT | PathDirection.LEFT | PathDirection.RIGHT_FRONT | PathDirection.LEFT_FRONT | PathDirection.RIGHT_BACK | PathDirection.LEFT_BACK;
/**
 * 入参 Point[]
 * 返回
 * [{
 *    direction: PathDirection
 *    distance: number
 *    points: Point[]
 * }]
 */
export declare function getDirectPath(points: [number, number][]): {
    direction: PathDirection;
    distance: number;
    points: [number, number][];
}[];
export declare function getDistanceByPathPos(path: [number, number][], pos: [number, number]): number;
export declare function getPosByPathDistance(path: [number, number][], distance: number): [number, number] | null;
