AnyCAD Rapid API 2026
Help you to create a better world!
载入中...
搜索中...
未找到
AnyCAD.Foundation.PlaneF类 参考

平面模板类 更多...

类 AnyCAD.Foundation.PlaneF 继承关系图:

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(沿法线方向移动平面回到原点的距离)。

构造及析构函数说明

◆ PlaneF() [1/6]

AnyCAD.Foundation.PlaneF.PlaneF ( )

默认构造函数

初始化平面为 XY 平面(法向量为 Z 轴单位向量,D=0)

◆ PlaneF() [2/6]

AnyCAD.Foundation.PlaneF.PlaneF ( PlaneF rhs)

拷贝构造函数

参数
rhs源平面对象

◆ PlaneF() [3/6]

AnyCAD.Foundation.PlaneF.PlaneF ( Vector3 rkNormal,
float fConstant )

通过法向量和常数构造平面

参数
rkNormal平面法向量
fConstant平面到原点的有符号距离

内部存储的 d 值为 -fConstant

◆ PlaneF() [4/6]

AnyCAD.Foundation.PlaneF.PlaneF ( float a,
float b,
float c,
float _d )

直接使用平面方程的四个系数构造平面

参数
a法向量的 x 分量
b法向量的 y 分量
c法向量的 z 分量
_d平面方程的常数项 D

◆ PlaneF() [5/6]

AnyCAD.Foundation.PlaneF.PlaneF ( Vector3 rkNormal,
Vector3 rkPoint )

通过法向量和平面上的点构造平面

参数
rkNormal平面法向量
rkPoint平面上的任意一点

◆ PlaneF() [6/6]

AnyCAD.Foundation.PlaneF.PlaneF ( Vector3 rkPoint0,
Vector3 rkPoint1,
Vector3 rkPoint2 )

通过平面上的三个点构造平面

参数
rkPoint0第一个点
rkPoint1第二个点
rkPoint2第三个点

三点不应共线,否则法向量计算结果不确定

成员函数说明

◆ applyMatrix() [1/2]

void AnyCAD.Foundation.PlaneF.applyMatrix ( Matrix4 matrix)

应用 4x4 变换矩阵到平面

参数
matrix4x4 变换矩阵

会同时变换法向量和 d 值

◆ applyMatrix() [2/2]

void AnyCAD.Foundation.PlaneF.applyMatrix ( Matrix4 matrix,
Matrix3 normalMatrix )

应用分离的模型矩阵和法线矩阵到平面

参数
matrix4x4 模型变换矩阵(用于变换平面上的点)
normalMatrix3x3 法线变换矩阵(通常是模型矩阵左上角 3x3 的逆转置)

这种方法可以更精确地处理非均匀缩放等情况下的法线变换

◆ coplanarPoint()

Vector3 AnyCAD.Foundation.PlaneF.coplanarPoint ( )

获取平面上的共面点

返回
平面上的一个点(从原点沿法线反方向移动 d 距离的点)

该点满足平面方程,可用于平面可视化或其他计算

◆ getDistance()

float AnyCAD.Foundation.PlaneF.getDistance ( Vector3 rkPoint)

计算点到平面的有符号距离

返回值的符号表示点在平面的哪一侧: - 正值:点在平面的正侧 - 负值:点在平面的负侧 - 零:点在平面上

Title: 只有当法向量是单位向量时,返回值的绝对值才是真实的几何距离。

参数
rkPoint待计算的点
返回
有符号距离值

◆ getSide() [1/4]

EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide ( AABoxF rkBox)

获取轴对齐包围盒相对于平面的位置

参数
rkBox待检测的轴对齐包围盒
返回
包围盒所在的侧面枚举值

如果包围盒与平面相交,返回 BOTH_SIDE。 只要有一个角点在平面上就视为相交。

◆ getSide() [2/4]

EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide ( Vector3 centre,
float radius )

获取球体相对于平面的位置

参数
centre球心位置
radius球体半径
返回
球体所在的侧面枚举值

◆ getSide() [3/4]

EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide ( Vector3 centre,
Vector3 halfSize )

获取包围盒相对于平面的位置(中心/半尺寸表示法)

参数
centre包围盒的中心点
halfSize包围盒的半尺寸(各轴向的一半长度)
返回
包围盒所在的侧面枚举值

◆ getSide() [4/4]

EnumPlaneSide AnyCAD.Foundation.PlaneF.getSide ( Vector3 rkPoint)

获取点相对于平面的位置

平面的"正侧"是指法向量指向的半空间,"负侧"是另一半空间。 "NO_SIDE" 表示点在平面上。

参数
rkPoint待检测的点
返回
点所在的侧面枚举值

◆ normalise()

float AnyCAD.Foundation.PlaneF.normalise ( )

归一化平面

将平面的法向量归一化为单位向量,并相应地调整 d 值的比例。

对于零长度向量不会崩溃,但不会对其分量进行任何更改。

返回
归一化前法向量的长度

◆ projectVector()

Vector3 AnyCAD.Foundation.PlaneF.projectVector ( Vector3 v)

将向量投影到平面上

返回输入向量中垂直于平面法向的分量。 可以通过从原始向量减去此方法的返回值来获得平行于法向的分量, 因为:平行分量 + 垂直分量 = 原始向量。

参数
v输入向量
返回
向量在平面上的投影

◆ redefine() [1/2]

void AnyCAD.Foundation.PlaneF.redefine ( Vector3 rkNormal,
Vector3 rkPoint )

通过法向量和点重新定义平面

参数
rkNormal新的法向量
rkPoint平面上的点

◆ redefine() [2/2]

void AnyCAD.Foundation.PlaneF.redefine ( Vector3 rkPoint0,
Vector3 rkPoint1,
Vector3 rkPoint2 )

通过三个点重新定义平面

参数
rkPoint0第一个点
rkPoint1第二个点
rkPoint2第三个点

将计算这三个点所在平面的法向量和常数项