|
AnyCAD Rapid API 2026
Help you to create a better world!
|
平面模板类 更多...
Public 成员函数 | |
| PlaneF (global::System.IntPtr cPtr, bool cMemoryOwn) | |
| 仅供内部使用 | |
| void | Dispose () |
| PlaneF () | |
| 默认构造函数 | |
| PlaneF (PlaneF rhs) | |
| 拷贝构造函数 | |
| PlaneF (Vector3 rkNormal, float fConstant) | |
| 通过法向量和常数构造平面 | |
| PlaneF (float a, float b, float c, float _d) | |
| 直接使用平面方程的四个系数构造平面 | |
| PlaneF (Vector3 rkNormal, Vector3 rkPoint) | |
| 通过法向量和平面上的点构造平面 | |
| PlaneF (Vector3 rkPoint0, Vector3 rkPoint1, Vector3 rkPoint2) | |
| 通过平面上的三个点构造平面 | |
| EnumPlaneSide | getSide (Vector3 rkPoint) |
| 获取点相对于平面的位置 | |
| EnumPlaneSide | getSide (AABoxF rkBox) |
| 获取轴对齐包围盒相对于平面的位置 | |
| EnumPlaneSide | getSide (Vector3 centre, Vector3 halfSize) |
| 获取包围盒相对于平面的位置(中心/半尺寸表示法) | |
| EnumPlaneSide | getSide (Vector3 centre, float radius) |
| 获取球体相对于平面的位置 | |
| float | getDistance (Vector3 rkPoint) |
| 计算点到平面的有符号距离 | |
| void | redefine (Vector3 rkPoint0, Vector3 rkPoint1, Vector3 rkPoint2) |
| 通过三个点重新定义平面 | |
| void | redefine (Vector3 rkNormal, Vector3 rkPoint) |
| 通过法向量和点重新定义平面 | |
| Vector3 | projectVector (Vector3 v) |
| 将向量投影到平面上 | |
| float | normalise () |
| 归一化平面 | |
| void | applyMatrix (Matrix4 matrix) |
| 应用 4x4 变换矩阵到平面 | |
| Vector3 | coplanarPoint () |
| 获取平面上的共面点 | |
| void | applyMatrix (Matrix4 matrix, Matrix3 normalMatrix) |
| 应用分离的模型矩阵和法线矩阵到平面 | |
属性 | |
| Vector3 | normal [get, set] |
| 平面法向量(不必是单位向量) | |
| float | d [get, set] |
| 平面方程的常数项 D | |
平面模板类
在 3D 空间中,平面由方程 Ax + By + Cz + D = 0 定义。 这等价于一个法向量(normal,其 x、y、z 分量分别对应系数 A、B、C) 和一个常数 D(沿法线方向移动平面回到原点的距离)。
| AnyCAD.Foundation.PlaneF.PlaneF | ( | ) |
默认构造函数
初始化平面为 XY 平面(法向量为 Z 轴单位向量,D=0)
| AnyCAD.Foundation.PlaneF.PlaneF | ( | PlaneF | rhs | ) |
拷贝构造函数
| rhs | 源平面对象 |
| AnyCAD.Foundation.PlaneF.PlaneF | ( | Vector3 | rkNormal, |
| float | fConstant ) |
通过法向量和常数构造平面
| rkNormal | 平面法向量 |
| fConstant | 平面到原点的有符号距离 |
内部存储的 d 值为 -fConstant
| AnyCAD.Foundation.PlaneF.PlaneF | ( | float | a, |
| float | b, | ||
| float | c, | ||
| float | _d ) |
直接使用平面方程的四个系数构造平面
| a | 法向量的 x 分量 |
| b | 法向量的 y 分量 |
| c | 法向量的 z 分量 |
| _d | 平面方程的常数项 D |
通过法向量和平面上的点构造平面
| rkNormal | 平面法向量 |
| rkPoint | 平面上的任意一点 |
通过平面上的三个点构造平面
| rkPoint0 | 第一个点 |
| rkPoint1 | 第二个点 |
| rkPoint2 | 第三个点 |
三点不应共线,否则法向量计算结果不确定
| void AnyCAD.Foundation.PlaneF.applyMatrix | ( | Matrix4 | matrix | ) |
应用 4x4 变换矩阵到平面
| matrix | 4x4 变换矩阵 |
会同时变换法向量和 d 值
应用分离的模型矩阵和法线矩阵到平面
| matrix | 4x4 模型变换矩阵(用于变换平面上的点) |
| normalMatrix | 3x3 法线变换矩阵(通常是模型矩阵左上角 3x3 的逆转置) |
这种方法可以更精确地处理非均匀缩放等情况下的法线变换
| Vector3 AnyCAD.Foundation.PlaneF.coplanarPoint | ( | ) |
获取平面上的共面点
该点满足平面方程,可用于平面可视化或其他计算
| float AnyCAD.Foundation.PlaneF.getDistance | ( | Vector3 | rkPoint | ) |
计算点到平面的有符号距离
返回值的符号表示点在平面的哪一侧: - 正值:点在平面的正侧 - 负值:点在平面的负侧 - 零:点在平面上
Title: 只有当法向量是单位向量时,返回值的绝对值才是真实的几何距离。
| rkPoint | 待计算的点 |
| EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide | ( | AABoxF | rkBox | ) |
获取轴对齐包围盒相对于平面的位置
| rkBox | 待检测的轴对齐包围盒 |
如果包围盒与平面相交,返回 BOTH_SIDE。 只要有一个角点在平面上就视为相交。
| EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide | ( | Vector3 | centre, |
| float | radius ) |
获取球体相对于平面的位置
| centre | 球心位置 |
| radius | 球体半径 |
| EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide | ( | Vector3 | centre, |
| Vector3 | halfSize ) |
获取包围盒相对于平面的位置(中心/半尺寸表示法)
| centre | 包围盒的中心点 |
| halfSize | 包围盒的半尺寸(各轴向的一半长度) |
| EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide | ( | Vector3 | rkPoint | ) |
获取点相对于平面的位置
平面的"正侧"是指法向量指向的半空间,"负侧"是另一半空间。 "NO_SIDE" 表示点在平面上。
| rkPoint | 待检测的点 |
| float AnyCAD.Foundation.PlaneF.normalise | ( | ) |
归一化平面
将平面的法向量归一化为单位向量,并相应地调整 d 值的比例。
对于零长度向量不会崩溃,但不会对其分量进行任何更改。
将向量投影到平面上
返回输入向量中垂直于平面法向的分量。 可以通过从原始向量减去此方法的返回值来获得平行于法向的分量, 因为:平行分量 + 垂直分量 = 原始向量。
| v | 输入向量 |
通过法向量和点重新定义平面
| rkNormal | 新的法向量 |
| rkPoint | 平面上的点 |