WebCAD-Lib-TS API 文档 - v1.0.0
    Preparing search index...

    Class GeometryUtils

    几何工具类

    提供各种几何计算和碰撞检测的静态方法。 这个类包含了CAD系统中常用的几何算法,如边界框检测、 点线关系判断、图形相交检测等。

    Index

    Constructors

    Methods

    • 检查边界框是否在窗口内

      判断一个边界框是否完全包含在另一个边界框(窗口)内。 使用容差比较来处理浮点数精度问题。

      Parameters

      • t: BoundingBox

        要检查的边界框,包含minX、maxX、minY、maxY属性

      • e: BoundingBox

        窗口边界框,包含minX、maxX、minY、maxY属性

      Returns boolean

      如果边界框完全在窗口内返回true,否则返回false

    • 检查矩形是否完全包含在另一个矩形内

      判断第一个矩形是否完全位于第二个矩形的内部。

      Parameters

      • t: Point2D

        第一个矩形的第一个角点

      • e: Point2D

        第一个矩形的对角点

      • i: Point2D

        第二个矩形的第一个角点

      • s: Point2D

        第二个矩形的对角点

      Returns boolean

      如果第一个矩形完全在第二个矩形内返回true

    • 检查两个矩形是否相交

      判断两个矩形是否有重叠区域(包括边界接触)。

      Parameters

      • t: Point2D

        第一个矩形的第一个角点

      • e: Point2D

        第一个矩形的对角点

      • i: Point2D

        第二个矩形的第一个角点

      • s: Point2D

        第二个矩形的对角点

      Returns boolean

      如果两个矩形相交返回true

    • 检查矩形相交(与hitTestRecToRec功能相同)

      这是hitTestRecToRec的别名方法,功能完全相同。

      Parameters

      • t: Point2D

        第一个矩形的第一个角点

      • e: Point2D

        第一个矩形的对角点

      • i: Point2D

        第二个矩形的第一个角点

      • s: Point2D

        第二个矩形的对角点

      Returns boolean

      如果两个矩形相交返回true

    • 检查边界框与直线的碰撞

      判断一个边界框是否与直线相交。算法通过检查边界框的四个角点 相对于直线的位置来判断是否相交。

      原理:如果边界框的四个角点都在直线的同一侧,则不相交; 如果角点分布在直线的两侧,则相交。

      Parameters

      Returns boolean

      如果边界框与直线相交返回true

    • 检查边界框与圆形的碰撞

      判断一个边界框是否与圆形相交。算法分为几个步骤:

      1. 检查边界框的四个角点是否在圆内
      2. 检查圆是否完全包含边界框
      3. 综合判断相交情况

      Parameters

      Returns boolean

      如果边界框与圆形相交返回true

    • 检查边界框与椭圆的碰撞

      判断一个边界框是否与椭圆相交。算法通过将椭圆离散化为线段, 然后检查每个线段是否与边界框相交。

      Parameters

      • t: { getGlPoints: () => Point2D[] }

        椭圆对象,必须有getGlPoints()方法

      • e: Point2D

        边界框最小点

      • i: Point2D

        边界框最大点

      Returns boolean

      如果边界框与椭圆相交返回true

    • 检查圆弧是否与边界框相交

      判断圆弧是否与指定的边界框相交。算法分为两步:

      1. 检查圆弧的边界框是否完全在目标边界框内
      2. 进行精确的圆弧与边界框相交检测

      Parameters

      • t: {
            center: Point2D;
            radius: number;
            startAng: number;
            endAng: number;
            startPoint: Point2D;
            endPoint: Point2D;
        }

        圆弧对象

      • e: BoundingBox

        边界框对象,包含minPoint和maxPoint属性

      Returns boolean

      如果圆弧与边界框相交返回true

    • 检查圆形是否与边界框相交

      判断圆形是否与指定的边界框相交。这是一个复杂的算法, 需要考虑多种情况:

      1. 边界框的角点是否在圆内
      2. 圆是否完全包含边界框
      3. 圆的象限点是否在边界框内

      Parameters

      • t: Point2D

        圆心坐标

      • e: number

        圆的半径

      • i: {
            minPoint: Point2D;
            maxPoint: Point2D;
            minX: number;
            maxX: number;
            minY: number;
            maxY: number;
        }

        边界框对象,包含minPoint和maxPoint属性

      Returns boolean

      如果圆形与边界框相交返回true

    • 检查椭圆是否与边界框相交

      判断椭圆是否与指定的边界框相交。算法分为两步:

      1. 检查椭圆的边界框是否完全在目标边界框内
      2. 进行精确的椭圆与边界框相交检测

      Parameters

      Returns boolean

      如果椭圆与边界框相交返回true

    • 检查直线是否与边界框相交

      判断直线是否与边界框的任意一条边相交。 边界框由四个点定义,形成四条边。

      Parameters

      • t: { startPoint: Point2D; endPoint: Point2D }

        直线对象,包含startPoint和endPoint属性

      • e: { point1: Point2D; point2: Point2D; point3: Point2D; point4: Point2D }

        边界框对象,包含point1、point2、point3、point4属性

      Returns boolean

      如果直线与边界框相交返回true

    • 起点到终点的边界框相交检查(空实现)

      这是一个占位方法,目前没有实现。

      Returns void

    • 检查点是否与边界框相交

      判断一个点是否在边界框内。对于点来说,相交就是包含。

      Parameters

      Returns boolean

      如果点在边界框内返回true

    • 检查连续线段是否与边界框相交

      判断由四个点组成的连续线段(形成闭合四边形)是否与边界框相交。 算法检查两种情况:

      1. 边界框是否完全在四边形内
      2. 四边形的任意一条边是否与边界框相交

      Parameters

      • t: Point2D[]

        四个点的数组,形成连续线段

      • e: {
            minPoint: Point2D;
            maxPoint: Point2D;
            minX: number;
            maxX: number;
            minY: number;
            maxY: number;
        }

        边界框对象

      Returns boolean

      如果连续线段与边界框相交返回true

    • 检查线段是否与边界框相交

      判断一条线段是否与边界框的任意一条边相交。 边界框由四条边组成:下边、右边、上边、左边。

      Parameters

      • t: Point2D

        线段起点

      • e: Point2D

        线段终点

      • i: {
            minPoint: Point2D;
            maxPoint: Point2D;
            minX: number;
            maxX: number;
            minY: number;
            maxY: number;
        }

        边界框对象

      Returns boolean

      如果线段与边界框相交返回true

    • 检查点是否在边界框内

      判断一个点是否位于边界框的内部(不包括边界)。

      Parameters

      • t: Point2D

        要检查的点

      • e: { minX: number; maxX: number; minY: number; maxY: number }

        边界框对象,包含minX、maxX、minY、maxY属性

      Returns boolean

      如果点在边界框内返回true

    • 判断点相对于直线的位置

      使用叉积计算点相对于直线的位置关系。 这是一个基础的几何算法,用于判断点在直线的哪一侧。

      Parameters

      Returns number

      -1=点在直线左侧,0=点在直线上,1=点在直线右侧

    • 检查边界框是否在点集形成的多边形内

      判断边界框是否完全位于由点集形成的四边形内部。 算法通过检查边界框的四个角点是否都在四边形的每条边的左侧来判断。

      Parameters

      • t: {
            minPoint: Point2D;
            maxPoint: Point2D;
            minX: number;
            maxX: number;
            minY: number;
            maxY: number;
        }

        边界框对象,包含minPoint、maxPoint等属性

      • e: Point2D[]

        四个点的数组,形成四边形

      Returns boolean

      如果边界框完全在四边形内返回true

    • 检查所有点是否都在直线的左侧

      判断给定的点集是否都位于指定直线的左侧。 这是一个辅助方法,用于多边形包含检测。

      Parameters

      Returns boolean

      如果所有点都在直线左侧返回true

    • 检查边界框与圆弧的碰撞并返回交点

      计算边界框与圆弧的所有交点。算法通过检查边界框的四条边 与圆弧的交点来实现。

      Parameters

      • t: {
            center: Point2D;
            radius: number;
            startAng: number;
            endAng: number;
            startPoint: Point2D;
            endPoint: Point2D;
        }

        圆弧对象

      • e: Point2D

        边界框最小点

      • i: Point2D

        边界框最大点

      Returns Point2D[]

      所有交点的数组

    • 计算直线与圆弧的交点

      先计算直线与圆弧所在圆的交点,然后筛选出在圆弧角度范围内的交点。

      Parameters

      • t: { startPoint: Point2D; endPoint: Point2D }

        直线对象

      • e: {
            center: Point2D;
            radius: number;
            startAng: number;
            endAng: number;
            color?: number;
        }

        圆弧对象

      Returns Point2D[]

      在圆弧范围内的交点数组

    • 计算直线与圆的交点

      这是一个复杂的几何算法,用于计算直线与圆的交点。 算法步骤:

      1. 将坐标系转换为以圆心为原点,直线方向为X轴的坐标系
      2. 在新坐标系中计算交点
      3. 将交点转换回原坐标系
      4. 根据需要筛选在线段范围内的交点

      Parameters

      • t: { startPoint: Point2D; endPoint: Point2D }

        直线对象,包含startPoint和endPoint

      • e: { center: Point2D; radius: number }

        圆对象,包含center和radius

      • i: boolean

        是否返回所有交点(true)还是只返回在线段上的交点(false)

      Returns Point2D[]

      交点数组