import { VideoElement } from '../types/data'; interface Point { x: number; y: number; id?: string; } /** * 把曲线变速的点分割成两份 * @param progress * @param points */ export declare function splitPoints(progress: number, points: Point[]): { x: number; y: number; id: string; }[][]; export declare const SPEED_SEGMENTATION_TIME = 0.01; /** * 曲线变速:传入的 x 值,从 points 对象数组中找出相邻的两个元素 * @param points * @param x * @returns */ export declare function findAdjacentPoints(points: Point[], x: number): [Point | null, Point | null]; /** * 获取多贝塞尔曲线和x的交点 * @param points * @param x */ export declare function getCrossPointByBezierX(points: Point[], x: number): number[]; /** * 通过曲线的x参数,求相对视频的时间 * 面积对应relative时间 progress是时间的占比 */ export declare function getBezierLineAreaFromBezierLineProgress(x: number, element: VideoElement): { progress: number; speed: number; cx?: number; cy?: number; }; export declare function getAllSpeedArea(element: VideoElement): number; /** * 通过时间轴对应的百分比x计算在duration上面的占比dx * @param x * @param element */ export declare function countX2Duration(x: number, element: VideoElement): number; /** * 时间轴对应的百分比在曲线图上对应扫过的面积比例 * @param x 时间轴对应的百分比 范围 0~1 * @param element * @returns Object { * progress: number // 扫过的面积比例 * speed: number // 当前的速度 * cx?: number; * cy?: number; * } */ export declare function getBezierLineAreaFromTimelineProgress(x: number, element: VideoElement): { speed: number; cx?: number; cy?: number; progress?: number; }; /** * 时间轴对应的百分比在曲线图上对应的进度 * @param x x进度 范围 0~1 * @param element * @returns */ export declare function getSpeedByRelative(x: number, element: VideoElement): { speed: number; cx?: number; cy?: number; progress?: number; }; export declare function videoElementDuration(element: VideoElement): number; export declare function videoAvgSpeed(element: VideoElement): number; /** * 计算贝塞尔曲线的平均y值 * samples 采样次数 */ export declare function averageBezierY(points: Point[], samples: number): number; /** * 1~0 映射到 10x~0.1x * @param x * @returns */ export declare function xToSpeed(y: number): number; /** * 0.1x~10x映射到 0~1 * @param y * @returns6 */ export declare function speedToX(y: number): number; /** * 曲线变速:查找最近的点 * @param points * @param x * @returns */ export declare function findNearestPoint(points: Point[], x: number): Point | null; /** * 找到 x 与三阶贝塞尔曲线的交点 * @param {Object} params - 贝塞尔曲线参数 * @param {number[]} params.p1 - 起点 [x, y] * @param {number[]} params.cp1 - 控制点 1 [x, y] * @param {number[]} params.cp2 - 控制点 2 [x, y] * @param {number[]} params.p2 - 终点 [x, y] * @param {number} xTarget - 目标 x 值 * @returns {number[][]} - 交点坐标数组 */ export declare function findIntersection(params: { p1: [number, number]; cp1: [number, number]; cp2: [number, number]; p2: [number, number]; }, xTarget: number): [number, number]; export declare function filterClosePoints(points: [number, number][], epsilon?: number): [number, number]; export {};