liko
    Preparing search index...

    Class Matrix

    2D 矩阵类,用于处理二维空间中的变换操作

    矩阵表示形式:

    | a | c | tx|
    | b | d | ty|
    | 0 | 0 | 1 |
    // 创建单位矩阵
    const matrix = new Matrix();

    // 创建自定义矩阵
    const customMatrix = new Matrix(2, 0, 0, 2, 100, 50);

    // 链式调用进行变换
    matrix.translate(10, 20).scale(2, 2).rotate(Math.PI / 4);

    // 应用变换到点
    const point = new Point(10, 10);
    const transformedPoint = matrix.apply(point);

    // 使用全局单位矩阵
    const identity = Matrix.IDENTITY;

    // 使用临时矩阵进行计算
    const temp = Matrix.TEMP.translate(5, 5);
    Index

    Constructors

    • 创建矩阵实例

      Parameters

      • a: number = 1

        x 轴缩放分量,默认为 1

      • b: number = 0

        y 轴倾斜分量,默认为 0

      • c: number = 0

        x 轴倾斜分量,默认为 0

      • d: number = 1

        y 轴缩放分量,默认为 1

      • tx: number = 0

        x 轴平移分量,默认为 0

      • ty: number = 0

        y 轴平移分量,默认为 0

      Returns Matrix

    Properties

    a: number = 1

    x 轴缩放分量

    b: number = 0

    y 轴倾斜分量(剪切变换)

    c: number = 0

    x 轴倾斜分量(剪切变换)

    d: number = 1

    y 轴缩放分量

    tx: number = 0

    x 轴平移分量

    ty: number = 0

    y 轴平移分量

    Accessors

    • get isIdentity(): boolean

      检查当前矩阵是否为单位矩阵

      Returns boolean

      如果是单位矩阵返回 true,否则返回 false

    • get IDENTITY(): Readonly<Matrix>

      全局单位矩阵,只读,始终保持单位矩阵状态

      Returns Readonly<Matrix>

      只读的单位矩阵实例

    • get TEMP(): Matrix

      全局临时矩阵对象,用于减少对象创建开销

      注意事项:

      • 获取时自动重置为单位矩阵
      • 多处使用时需要注意数据覆盖问题
      • 不适用于需要保持状态的场景

      Returns Matrix

    Methods

    • 将给定的矩阵附加到(右乘)当前矩阵

      计算公式:this = this × matrix

      注意事项:

      • 此操作会修改当前矩阵实例
      • 矩阵乘法不满足交换律,顺序很重要

      Parameters

      • matrix: Matrix

        要附加的矩阵

      Returns this

      当前矩阵实例,支持链式调用

    • 将坐标点从当前坐标系转换到新的坐标系

      例如:从子坐标系转换到世界坐标系

      Type Parameters

      Parameters

      • position: IPoint

        要转换的坐标点

      • Optionalout: P

        输出结果的坐标点,如不提供则创建新的 Point 实例

      Returns P

      转换后的坐标点

    • 将坐标点从当前坐标系转换到逆变换坐标系

      例如:从世界坐标系转换到子坐标系

      Type Parameters

      Parameters

      • position: IPoint

        要转换的坐标点

      • Optionalout: P

        输出结果的坐标点,如不提供则创建新的 Point 实例

      Returns P

      转换后的坐标点

    • 克隆当前矩阵,返回新的矩阵实例

      注意事项:

      • 返回的是深拷贝,修改克隆矩阵不会影响原矩阵

      Returns Matrix

      新的矩阵实例,包含相同的变换信息

    • 将给定矩阵的内容复制到当前矩阵

      注意事项:

      • 此操作会完全覆盖当前矩阵的所有分量

      Parameters

      • matrix: Matrix

        要复制的源矩阵

      Returns this

      当前矩阵实例,支持链式调用

    • 分解矩阵信息为位置、缩放和旋转

      注意事项:

      • 复杂的变换组合可能导致分解结果不够精确
      • 倾斜变换会影响分解的准确性

      Parameters

      • transform: Transform

        变换对象,用于获取轴心点信息

      Returns {
          position: { x: number; y: number };
          rotation: number;
          scale: { x: number; y: number };
      }

      包含位置、缩放和旋转信息的对象

    • 重置为单位矩阵,单位矩阵不会对坐标产生任何变换

      Returns this

      当前矩阵实例,支持链式调用

    • 计算矩阵的逆矩阵,并应用到当前矩阵

      注意事项:

      • 此操作会修改当前矩阵实例
      • 如果矩阵不可逆(行列式为0),结果可能不正确

      Returns this

      当前矩阵实例,支持链式调用

    • 将给定的矩阵前置到(左乘)当前矩阵

      计算公式:this = matrix × this

      注意事项:

      • 此操作会修改当前矩阵实例
      • 矩阵乘法不满足交换律,顺序很重要

      Parameters

      • matrix: Matrix

        要前置的矩阵

      Returns this

      当前矩阵实例,支持链式调用

    • 对矩阵进行旋转变换

      注意事项:

      • 此操作会修改当前矩阵实例
      • 旋转以原点为中心进行

      Parameters

      • radian: number

        旋转的弧度值(正值为逆时针旋转)

      Returns this

      当前矩阵实例,支持链式调用

    • 对矩阵进行缩放变换

      注意事项:

      • 此操作会修改当前矩阵实例
      • 缩放为0会导致矩阵不可逆

      Parameters

      • x: number

        x 轴缩放比率

      • y: number

        y 轴缩放比率

      Returns this

      当前矩阵实例,支持链式调用

    • 设置当前矩阵的所有分量值

      Parameters

      • a: number

        x 轴缩放分量

      • b: number

        y 轴倾斜分量

      • c: number

        x 轴倾斜分量

      • d: number

        y 轴缩放分量

      • tx: number

        x 轴平移分量

      • ty: number

        y 轴平移分量

      Returns this

      当前矩阵实例,支持链式调用

    • 对矩阵进行平移变换

      注意事项:

      • 此操作会修改当前矩阵实例

      Parameters

      • x: number

        x 坐标平移量

      • y: number

        y 坐标平移量

      Returns this

      当前矩阵实例,支持链式调用