liko
    Preparing search index...

    Class Rectangle

    二维矩形区域类,用于表示和操作矩形区域

    矩形以左上角坐标(x, y)和尺寸(width, height)来定义

    // 创建矩形
    const rect = new Rectangle(10, 20, 100, 50);

    // 检测点是否在矩形内
    const isInside = rect.contains(50, 30);

    // 扩展矩形包含另一个矩形
    const otherRect = new Rectangle(0, 0, 200, 100);
    rect.fit(otherRect);

    // 添加内边距
    rect.pad(5, 10);

    // 检测两个矩形是否相交
    const intersects = rect.intersects(otherRect);
    Index

    Constructors

    • 创建矩形实例

      Parameters

      • x: number = 0

        左上角的 x 坐标,默认为0

      • y: number = 0

        左上角的 y 坐标,默认为0

      • width: number = 0

        矩形的宽度,默认为0

      • height: number = 0

        矩形的高度,默认为0

      Returns Rectangle

    Properties

    height: number = 0

    矩形的高度,单位为像素

    必须为非负数,0表示无高度

    width: number = 0

    矩形的宽度,单位为像素

    必须为非负数,0表示无宽度

    x: number = 0

    矩形左上角的 x 坐标

    矩形的水平位置,配合width确定水平范围 [x, x+width)

    y: number = 0

    矩形左上角的 y 坐标

    矩形的垂直位置,配合height确定垂直范围 [y, y+height)

    TEMP: Rectangle = ...

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

    在频繁计算时可重复使用此对象,但需注意不要在多处同时使用

    Accessors

    • get bottom(): number

      获取矩形的下边界坐标

      Returns number

      矩形下边界的y坐标 (y + height)

    • get left(): number

      获取矩形的左边界坐标,等同于 x

      Returns number

      矩形左边界的x坐标

    • get right(): number

      获取矩形的右边界坐标

      Returns number

      矩形右边界的x坐标 (x + width)

    • get top(): number

      获取矩形的上边界坐标,等同于 y

      Returns number

      矩形上边界的y坐标

    Methods

    • 创建当前矩形的一个副本

      Returns Rectangle

      一个新的矩形实例,包含与当前矩形相同的属性值

      返回的是深拷贝,修改副本不会影响原矩形

    • 判断指定坐标点是否在矩形区域内

      Parameters

      • x: number

        待检测点的 x 坐标

      • y: number

        待检测点的 y 坐标

      Returns boolean

      如果点在矩形内(包含边界)返回 true,否则返回 false

    • 从指定的矩形对象复制属性值到当前矩形

      Parameters

      • rect: IRectangle

        源矩形对象,必须包含x、y、width、height属性

      Returns this

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

    • 从指定的边界对象复制属性值到当前矩形

      Parameters

      • bounds: Bounds

        源边界对象,必须包含边界信息

      Returns this

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

      边界对象的坐标系统可能与矩形不同,会自动转换

    • 判断当前矩形与指定矩形的所有属性值是否完全相等

      Parameters

      • rect: IRectangle

        待比较的矩形对象

      Returns boolean

      如果所有属性值都相等则返回 true,否则返回 false

      使用严格相等比较,浮点数精度问题可能导致意外结果

    • 扩展当前矩形以完全包含指定的矩形

      Parameters

      Returns this

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

      结果矩形是包含两个矩形的最小矩形(外接矩形)

    • 判断当前矩形是否与另一个矩形相交

      Parameters

      • other: Rectangle

        待检测的矩形对象

      • OptionalotherMatrix: Matrix

        可选的变换矩阵,用于在检测前对待检测矩形进行变换

      Returns boolean

      如果两个矩形相交返回 true,否则返回 false

      • 不提供变换矩阵时使用轴对齐矩形相交检测,性能更好
      • 提供变换矩阵时使用分离轴定理进行相交检测,支持旋转矩形
      • 变换矩阵的行列式为0时总是返回false(矩阵不可逆)
      • 边界重叠被认为是相交
    • 按指定的内边距扩展矩形的四个边

      Parameters

      • paddingX: number = 0

        水平方向的内边距值,会同时应用到左右两边

      • paddingY: number = paddingX

        垂直方向的内边距值,默认等于 paddingX,会同时应用到上下两边

      Returns this

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

      • 负值会收缩矩形
      • 过大的负值可能导致宽度或高度变为负数
    • 重置矩形的所有属性为默认值(0)

      Returns this

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

    • 设置矩形的位置和大小

      Parameters

      • x: number

        左上角的 x 坐标

      • y: number

        左上角的 y 坐标

      • width: number

        矩形的宽度,应为非负数

      • height: number

        矩形的高度,应为非负数

      Returns this

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