import { Mut, NonConstructiable } from '../foundation'; import { Point } from './point'; import { Rect } from './rect'; /** * 标准 3×3,row-major order * * | scale-x skew-x trans-x | * | skew-y scale-y trans-y | * | persp-0 persp-1 persp-2 | * */ export interface Matrix { readonly values: Readonly; } export declare class Matrix extends NonConstructiable { static readonly identity: Matrix; static eq({ values: lValues }: Matrix, { values: rValues }: Matrix): boolean; static fromArray(array: [ number, number, number, number, number, number, number, number, number ]): Matrix; static fromTranslate(tx: number, ty: number): Matrix; static fromScale(sx: number, sy?: number): Matrix; static fromScaleTranslate(sx: number, sy: number, tx: number, ty: number): Matrix; static fromRotation(rad: number, tx: number, ty: number): Matrix; static clone(m: Matrix): Matrix; /** * 矩阵乘法 * * | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | * a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | * | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR | */ static mul(lhs: Matrix, rhs: Matrix): Matrix; static getTranslate(m: Matrix): Point; static leftTranslate(offset: Point, rhs: Matrix): Matrix; static setTranslate(matrix: Matrix, tx: number, ty: number): Matrix; static transformPoint({ values }: Matrix, { x, y }: Point): Point; static inverseTransformPoint({ values }: Matrix, { x, y }: Point): Point; static transformRect(matrix: Matrix, { left, top, right, bottom }: Rect): Rect; } export declare class MutableMatrix implements Mut { readonly values: Float32Array; private constructor(); static fromMatrix(matrix: Matrix): MutableMatrix; static fromIdentity(): MutableMatrix; translate(tx: number, ty: number): void; mul({ values: r }: Matrix): void; }