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

平面模板类 更多...

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

Public 成员函数

 Plane (global::System.IntPtr cPtr, bool cMemoryOwn)
 仅供内部使用
 
void Dispose ()
 
 Plane ()
 默认构造函数
 
 Plane (Plane rhs)
 拷贝构造函数
 
 Plane (Vector3d rkNormal, double fConstant)
 通过法向量和常数构造平面
 
 Plane (double a, double b, double c, double _d)
 直接使用平面方程的四个系数构造平面
 
 Plane (Vector3d rkNormal, Vector3d rkPoint)
 通过法向量和平面上的点构造平面
 
 Plane (Vector3d rkPoint0, Vector3d rkPoint1, Vector3d rkPoint2)
 通过平面上的三个点构造平面
 
EnumPlaneSide getSide (Vector3d rkPoint)
 获取点相对于平面的位置
 
EnumPlaneSide getSide (AABox rkBox)
 获取轴对齐包围盒相对于平面的位置
 
EnumPlaneSide getSide (Vector3d centre, Vector3d halfSize)
 获取包围盒相对于平面的位置(中心/半尺寸表示法)
 
EnumPlaneSide getSide (Vector3d centre, double radius)
 获取球体相对于平面的位置
 
double getDistance (Vector3d rkPoint)
 计算点到平面的有符号距离
 
void redefine (Vector3d rkPoint0, Vector3d rkPoint1, Vector3d rkPoint2)
 通过三个点重新定义平面
 
void redefine (Vector3d rkNormal, Vector3d rkPoint)
 通过法向量和点重新定义平面
 
Vector3d projectVector (Vector3d v)
 将向量投影到平面上
 
double normalise ()
 归一化平面
 
void applyMatrix (Matrix4d matrix)
 应用 4x4 变换矩阵到平面
 
Vector3d coplanarPoint ()
 获取平面上的共面点
 
void applyMatrix (Matrix4d matrix, Matrix3d normalMatrix)
 应用分离的模型矩阵和法线矩阵到平面
 

属性

Vector3d normal [get, set]
 平面法向量(不必是单位向量)
 
double d [get, set]
 平面方程的常数项 D
 

详细描述

平面模板类

在 3D 空间中,平面由方程 Ax + By + Cz + D = 0 定义。 这等价于一个法向量(normal,其 x、y、z 分量分别对应系数 A、B、C) 和一个常数 D(沿法线方向移动平面回到原点的距离)。

构造及析构函数说明

◆ Plane() [1/6]

AnyCAD.Foundation.Plane.Plane ( )

默认构造函数

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

◆ Plane() [2/6]

AnyCAD.Foundation.Plane.Plane ( Plane rhs)

拷贝构造函数

参数
rhs源平面对象

◆ Plane() [3/6]

AnyCAD.Foundation.Plane.Plane ( Vector3d rkNormal,
double fConstant )

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

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

内部存储的 d 值为 -fConstant

◆ Plane() [4/6]

AnyCAD.Foundation.Plane.Plane ( double a,
double b,
double c,
double _d )

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

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

◆ Plane() [5/6]

AnyCAD.Foundation.Plane.Plane ( Vector3d rkNormal,
Vector3d rkPoint )

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

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

◆ Plane() [6/6]

AnyCAD.Foundation.Plane.Plane ( Vector3d rkPoint0,
Vector3d rkPoint1,
Vector3d rkPoint2 )

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

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

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

成员函数说明

◆ applyMatrix() [1/2]

void AnyCAD.Foundation.Plane.applyMatrix ( Matrix4d matrix)

应用 4x4 变换矩阵到平面

参数
matrix4x4 变换矩阵

会同时变换法向量和 d 值

◆ applyMatrix() [2/2]

void AnyCAD.Foundation.Plane.applyMatrix ( Matrix4d matrix,
Matrix3d normalMatrix )

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

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

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

◆ coplanarPoint()

Vector3d AnyCAD.Foundation.Plane.coplanarPoint ( )

获取平面上的共面点

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

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

◆ getDistance()

double AnyCAD.Foundation.Plane.getDistance ( Vector3d rkPoint)

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

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

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

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

◆ getSide() [1/4]

EnumPlaneSide AnyCAD.Foundation.Plane.getSide ( AABox rkBox)

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

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

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

◆ getSide() [2/4]

EnumPlaneSide AnyCAD.Foundation.Plane.getSide ( Vector3d centre,
double radius )

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

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

◆ getSide() [3/4]

EnumPlaneSide AnyCAD.Foundation.Plane.getSide ( Vector3d centre,
Vector3d halfSize )

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

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

◆ getSide() [4/4]

EnumPlaneSide AnyCAD.Foundation.Plane.getSide ( Vector3d rkPoint)

获取点相对于平面的位置

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

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

◆ normalise()

double AnyCAD.Foundation.Plane.normalise ( )

归一化平面

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

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

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

◆ projectVector()

Vector3d AnyCAD.Foundation.Plane.projectVector ( Vector3d v)

将向量投影到平面上

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

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

◆ redefine() [1/2]

void AnyCAD.Foundation.Plane.redefine ( Vector3d rkNormal,
Vector3d rkPoint )

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

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

◆ redefine() [2/2]

void AnyCAD.Foundation.Plane.redefine ( Vector3d rkPoint0,
Vector3d rkPoint1,
Vector3d rkPoint2 )

通过三个点重新定义平面

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

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