/** * 2D矩阵变换工具类 * 提供2D平面图形变换相关的工具函数和类 */ import { Vec2d, VecLike } from './Vec2d'; import { EASINGS } from './easings'; export interface Transform2D { translateX: number; translateY: number; scaleX: number; scaleY: number; rotation: number; skewX: number; skewY: number; } /** * 2D矩阵类 * 表示3x3变换矩阵 [a, b, c, d, e, f, g, h, i] * 其中 g=h=0, i=1 用于2D变换 */ export declare class Matrix2D { private matrix; constructor(a?: number, b?: number, c?: number, d?: number, e?: number, f?: number, g?: number, h?: number, i?: number); /** * 获取矩阵元素 */ getElement(row: number, col: number): number; /** * 设置矩阵元素 */ setElement(row: number, col: number, value: number): void; /** * 获取矩阵数组 */ toArray(): number[]; /** * 获取CSS transform字符串 */ toCSSTransform(): string; /** * 矩阵乘法 */ multiply(other: Matrix2D): Matrix2D; /** * 矩阵求逆 */ inverse(): Matrix2D; /** * 计算行列式 */ determinant(): number; /** * 克隆矩阵 */ clone(): Matrix2D; /** * 判断是否为单位矩阵 */ isIdentity(): boolean; } /** * 创建单位矩阵 */ export declare function createIdentityMatrix(): Matrix2D; /** * 创建平移矩阵 */ export declare function createTranslationMatrix(tx: number, ty: number): Matrix2D; /** * 创建缩放矩阵 */ export declare function createScaleMatrix(sx: number, sy?: number): Matrix2D; /** * 创建旋转矩阵 */ export declare function createRotationMatrix(angle: number): Matrix2D; /** * 创建倾斜矩阵 */ export declare function createSkewMatrix(skewX: number, skewY: number): Matrix2D; /** * 应用变换到点.这个看着有错误 */ export declare function transformPoint(matrix: Matrix2D, point: VecLike): Vec2d; /** * 应用变换到向量 */ export declare function transformVector(matrix: Matrix2D, vector: VecLike): Vec2d; /** * 逆向变换向量 * 已知变换后的向量和变换矩阵,求原始向量 * @param matrix 变换矩阵 * @param transformedVector 变换后的向量 * @returns 原始向量 */ export declare function inverseTransformVector(matrix: Matrix2D, transformedVector: VecLike): Vec2d; /** * 应用变换到点数组 */ export declare function transformPoints(matrix: Matrix2D, points: VecLike[]): Vec2d[]; /** * 组合多个变换矩阵 */ export declare function composeTransforms(...matrices: Matrix2D[]): Matrix2D; /** * 从变换参数创建矩阵 */ export declare function createTransformMatrix(transform: Transform2D): Matrix2D; /** * 分解矩阵为变换参数 */ export declare function decomposeMatrix(matrix: Matrix2D): Transform2D; /** * 从矩阵中获取旋转角度 * @param matrix 矩阵 * @returns 旋转角度(逆时针为正,顺时针为360-角度) */ export declare function getAngleByMatrix(matrix: Matrix2D): number; /** * 插值两个矩阵 */ export declare function interpolateMatrix(matrix1: Matrix2D, matrix2: Matrix2D, t: number): Matrix2D; /** * 矩阵变换工具类 */ export declare class MatrixTransformUtils { /** * 围绕指定点旋转 */ static rotateAroundPoint(angle: number, centerX: number, centerY: number): Matrix2D; /** * 围绕指定点缩放 */ static scaleAroundPoint(sx: number, sy: number, centerX: number, centerY: number): Matrix2D; /** * 计算多边形的质心 */ static polygonCentroid(points: VecLike[]): Vec2d; /** * 计算包围盒 */ static boundingBox(points: VecLike[]): { min: Vec2d; max: Vec2d; }; /** * 判断点是否在多边形内 */ static pointInPolygon(point: VecLike, polygon: VecLike[]): boolean; /** * 计算两条线段的交点 */ static lineIntersection(line1Start: VecLike, line1End: VecLike, line2Start: VecLike, line2End: VecLike): Vec2d | null; } /** * 矩阵动画工具类 */ export declare class MatrixAnimationUtils { /** * 创建动画帧 */ static createAnimationFrames(startMatrix: Matrix2D, endMatrix: Matrix2D, duration: number, easingFn?: (t: number) => number): Matrix2D[]; /** * 使用缓动函数插值矩阵 */ static interpolateWithEasing(matrix1: Matrix2D, matrix2: Matrix2D, t: number, easingType?: keyof typeof EASINGS): Matrix2D; } export default Matrix2D;