liko
    Preparing search index...

    Class Bounds

    包围盒类,用于表示对象的边界区域

    包围盒是一个轴对齐的矩形区域,通过 minX、minY、maxX、maxY 四个值定义。 主要用于碰撞检测、视口裁剪、渲染优化等场景。

    特点:

    • 支持链式调用,大部分方法返回 this
    • 内置空间变换支持,可配合 Matrix 进行复杂变换
    • 提供多种便捷属性访问方式(x/y、width/height、left/right/top/bottom)
    • 支持与 Rectangle 类型互相转换

    注意事项:

    • 初始状态下 minX/minY 为正无穷,maxX/maxY 为负无穷,表示无效状态
    • 空包围盒指 minX > maxX 或 minY > maxY 的情况
    • 变换操作会直接修改当前实例,如需保留原数据请先 clone()
    // 创建一个空的包围盒
    const bounds = new Bounds();

    // 创建指定范围的包围盒
    const bounds2 = new Bounds(0, 0, 100, 50);

    // 添加矩形区域到包围盒
    bounds.addFrame(10, 10, 90, 40);

    // 检查点是否在包围盒内
    if (bounds.contains(50, 25)) {
    console.log('点在包围盒内');
    }

    // 对包围盒进行变换
    const matrix = new Matrix().translate(100, 50).scale(2, 2);
    bounds.applyMatrix(matrix);

    // 获取包围盒信息
    console.log(`宽度: ${bounds.width}, 高度: ${bounds.height}`);
    Index

    Constructors

    • 创建一个包围盒实例

      Parameters

      • minX: number = Number.POSITIVE_INFINITY

        最小 X 坐标,默认为正无穷大(表示无效状态)

      • minY: number = Number.POSITIVE_INFINITY

        最小 Y 坐标,默认为正无穷大(表示无效状态)

      • maxX: number = Number.NEGATIVE_INFINITY

        最大 X 坐标,默认为负无穷大(表示无效状态)

      • maxY: number = Number.NEGATIVE_INFINITY

        最大 Y 坐标,默认为负无穷大(表示无效状态)

      Returns Bounds

    Properties

    maxX: number = Number.NEGATIVE_INFINITY

    包围盒的最大 X 坐标

    Number.NEGATIVE_INFINITY
    
    maxY: number = Number.NEGATIVE_INFINITY

    包围盒的最大 Y 坐标

    Number.NEGATIVE_INFINITY
    
    minX: number = Number.POSITIVE_INFINITY

    包围盒的最小 X 坐标

    Number.POSITIVE_INFINITY
    
    minY: number = Number.POSITIVE_INFINITY

    包围盒的最小 Y 坐标

    Number.POSITIVE_INFINITY
    

    Accessors

    • get bottom(): number

      包围盒的下边界,等同于 maxY 提供更语义化的属性访问方式

      Returns number

    • get height(): number

      包围盒的高度 计算公式:maxY - minY

      Returns number

      如果包围盒无效或为空,可能返回负数或 NaN

    • get isEmpty(): boolean

      检查包围盒是否为空 空包围盒表示没有实际的区域面积

      Returns boolean

      当 minX > maxX 或 minY > maxY 时返回 true

    • get isValid(): boolean

      检查包围盒是否有效 包围盒在初始化后,如果没有添加任何内容,则为无效状态

      Returns boolean

      当 minX 和 minY 不为初始的正无穷值时返回 true

    • get left(): number

      包围盒的左边界,等同于 minX 提供更语义化的属性访问方式

      Returns number

    • get rectangle(): Rectangle

      将包围盒转换为矩形对象 返回的矩形对象会被缓存,多次调用返回同一实例

      Returns Rectangle

      Rectangle 实例,如果包围盒为空则返回零尺寸矩形

    • get right(): number

      包围盒的右边界,等同于 maxX 提供更语义化的属性访问方式

      Returns number

    • get top(): number

      包围盒的上边界,等同于 minY 提供更语义化的属性访问方式

      Returns number

    • get width(): number

      包围盒的宽度 计算公式:maxX - minX

      Returns number

      如果包围盒无效或为空,可能返回负数或 NaN

    • get x(): number

      包围盒的起始 X 坐标,等同于 minX 提供更语义化的属性访问方式

      Returns number

    • get y(): number

      包围盒的起始 Y 坐标,等同于 minY 提供更语义化的属性访问方式

      Returns number

    Methods

    • 合并另一个包围盒到当前包围盒

      Parameters

      • bounds: BoundsData

        要合并的包围盒数据

      • Optionalmatrix: Matrix

        可选的变换矩阵

      Returns this

      当前实例,支持链式调用

    • 使用遮罩包围盒限制当前包围盒的范围,结果是当前包围盒与遮罩包围盒的交集 如果没有交集,结果将是一个空包围盒

      Parameters

      • mask: Bounds

        用于限制范围的遮罩包围盒

      Returns this

      当前实例,支持链式调用

    • 通过两个对角点添加矩形区域到包围盒 此方法会考虑变换矩阵,对四个顶点进行完整的矩阵变换

      Parameters

      • x0: number

        左上角 X 坐标

      • y0: number

        左上角 Y 坐标

      • x1: number

        右下角 X 坐标

      • y1: number

        右下角 Y 坐标

      • Optionalmatrix: Matrix

        可选的变换矩阵,不提供则使用默认单位矩阵

      Returns this

      当前实例,支持链式调用

    • 添加矩形对象到包围盒

      Parameters

      • rect: Rectangle

        要添加的矩形对象

      • Optionalmatrix: Matrix

        可选的变换矩阵

      Returns this

      当前实例,支持链式调用

    • 对包围盒应用矩阵变换 会计算四个顶点变换后的位置,然后重新计算包围盒范围 注意:旋转等变换可能会改变包围盒的大小

      Parameters

      • matrix: Matrix

        要应用的变换矩阵

      Returns this

      当前实例,支持链式调用

    • 对包围盒坐标进行向上取整处理 左上角坐标向下取整(确保包含原区域),右下角坐标向上取整 常用于像素对齐或确保完整覆盖某个区域

      Returns this

      当前实例,支持链式调用

    • 创建当前包围盒的完整副本,返回的新实例与原实例完全独立

      Returns Bounds

      新的包围盒实例

    • 检查指定坐标点是否在包围盒内,边界上的点被认为是包含在内的

      Parameters

      • x: number

        要检测的 X 坐标

      • y: number

        要检测的 Y 坐标

      Returns boolean

      点在包围盒内(包括边界)时返回 true

    • 将包围盒限制在指定矩形区域内,超出矩形范围的部分会被裁剪掉

      Parameters

      Returns this

      当前实例,支持链式调用

    • 通过内边距扩展包围盒区域,正数值扩大包围盒,负数值缩小包围盒

      Parameters

      • paddingX: number

        X 方向的扩展像素数

      • paddingY: number = paddingX

        Y 方向的扩展像素数,省略时与 paddingX 相同

      Returns this

      当前实例,支持链式调用

    • 重置包围盒到初始的无效状态

      Returns this

      当前实例,支持链式调用

    • 按比例缩放包围盒,所有坐标值都会乘以对应的缩放因子

      Parameters

      • x: number

        X 轴缩放比例

      • y: number = x

        Y 轴缩放比例,省略时与 x 相同

      Returns this

      当前实例,支持链式调用

    • 直接设置包围盒的边界值

      Parameters

      • minX: number

        最小 X 坐标

      • minY: number

        最小 Y 坐标

      • maxX: number

        最大 X 坐标

      • maxY: number

        最大 Y 坐标

      Returns this

      当前实例,支持链式调用