import { IPoint } from "../../../../idl";
import { IRectNode } from "../../../../common";
export declare class BezierCurve {
    p0: IPoint;
    p1: IPoint;
    p2: IPoint;
    p3: IPoint;
    constructor(p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint);
    getPos(t: number): IPoint;
    getHalfTPos(): IPoint;
    getBounds(): IRectNode;
    /**
     * 计算贝塞尔曲线在参数t处的导数（切线方向）
     */
    private getDerivative;
    /**
     * 计算点到曲线上某个参数t对应点的距离平方
     */
    private getDistanceSquared;
    /**
     * 根据给定的点，计算该点在贝塞尔曲线上对应的参数t值
     * 使用牛顿迭代法和采样法的组合来找到最接近的t值
     * @param point 目标点
     * @param tolerance 容差，默认0.0001
     * @param maxIterations 最大迭代次数，默认50
     * @returns 对应的t值，如果点不在曲线上，返回最接近的t值
     */
    getTValueByPoint(point: IPoint, tolerance?: number, maxIterations?: number): number;
    /**
     * 快速粗略计算贝塞尔曲线的长度（性能优先）
     * 使用简单的折线段近似，适合需要频繁计算或实时计算的场景
     * @param segments 分段数量，默认10，数量越多越精确但性能越低
     * @returns 曲线的近似长度
     */
    getApproximateLength(segments?: number): number;
    /**
     * 根据从起点开始的距离，快速粗略计算对应的参数t值（性能优先）
     * 使用折线段近似来查找距离对应的t值，适合需要频繁计算的场景
     * @param distance 从曲线起点开始的目标距离
     * @param segments 分段数量，默认20，数量越多越精确但性能越低
     * @returns 对应的t值，如果distance超出曲线长度，返回1
     */
    getTValueByDistance(distance: number, segments?: number): number;
}
//# sourceMappingURL=BezierCurve.d.ts.map