分析Open CASCADE 中的Geom包
2019-04-17 本文已影响0人
yumxuanyi
@版权声明:本文为版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出,
本文链接https://www.jianshu.com/p/af8d52c6d2aa
如有问题, 可邮件(yumxuanyi@qq.com)咨询。
关键字:OpenCascade、Geom
轴、坐标系
Geom_AxisPlacement
- 这是一个抽象的类。定义了三维空间中的位置坐标系的共有行为。
- Geom包中提供了它的两个派生类Geom_Axis1Placement和Geom_Axis2Placement。分别表示一个坐标轴和一个坐标系
- 其内部数据成员为gp_Ax1
Geom_Axis1Placement
- 表示三维空间中的一个坐标轴。
- 一个轴由一个坐标点(轴的起点)和一个单位向量(轴的方向)表示。
- 其内部数据成员为gp_Ax1,但是比gp_Ax1具有更多的更复杂的数据结构。比如可以用来定义对称轴或旋转轴。
Geom_Axis2Placement
- 表示三维空间中的右手坐标系。
- 一个坐标系由一个坐标点和三个相互垂直的单位向量组成。
- 坐标系的方向Z Direction又称Main Direction。因为一旦当该单位向量被修改,坐标系的X Direction 和 Y Direction就会重新计算。但是如果X Direction 或者 Y Direction被修改了,Main Direction会保持不变。
- 该坐标系提供的部分功能与gp_Ax2提供的功能一致,但是还可以用来定义几何变换Geometric transformations
点
Geom_Point
- 一个抽象类,描述了三维空间中几何点的共同行为。
- Geom_CartesianPoint为其派生类
Geom_CartesianPoint
- 表示三维空间中的一个点。
- 一个Geom_CartesianPoint由一个gp_Pnt point定义或则笛卡尔坐标系中的三个坐标值X、 Y、Z给定。
线
直线
Geom_Line
- 表示一条无界线。由一个位置和一个轴表示。
- 它的参数方程为:
P(U) = O + U *Dir
P 为参数为U时线上的点
O 是位置坐坐标的坐标点
Dir是位置坐标的单位向量
曲线
Geom_Curve
- 一个抽象类,描述了三维空间中曲线的共有行为。
Geom_Conic
- 一个抽象类 表示3D空间中的圆锥曲线(二次曲线)的共同行为。
- 它的四个派生类为:Geom_Circle、Geom_Ellipse、Geom_Hyperbola和Geom_Parabola
- 其成员gp_Ax2 pos。表示该圆锥曲线在3D空间中的的(右手)局部i坐标系。坐标系的X方向和Y方向共同决定了改圆锥曲线所在的平面。
Geom_Circle
- 表示三维空间中的一个圆。一个圆由一个半径以及一个中心坐标来表示。
- 它的位置由一个右手局部坐标系(gp_Ax2对象)指定。其中坐标系的原点为圆的中心点。坐标系的X 方向和Y方向定义了圆所在的平面。坐标系的Z方向为元所在平面的法向量
- 曲线的参数方程形式为:
P(U) = O + R *Cos(U) * XDir + R *Sin(U) * YDir ;
其中P 是在参数U时的坐标点
O 、XDir、YDir分别表示该局部坐标系的原点、X方向、Y方向
R 是圆的半径- 该局部坐标系的X轴方向定义了改圆的起始参数。其它参数为中心点到曲线上点的方向
与 X 轴的夹角,参数范围为[0,2*PI]- 一个圆是封闭的和周期的。它的周期是2*PI
Geom_Ellipse
- 表示三维空间中的椭圆
Geom_Parabola
- 表示三维空间中的抛物线
- 一条抛物选由 焦距(focal length) 和 其在空间中的位置(gp_Ax2)表示
- 焦距(focal length) :顶点(apex)到焦点的距离
- gp_Ax2表示了 1. 抛物线的位置点 ;2. 抛物线的对称轴X Axis,抛物线位于对称轴的正方向 ;
origin 、XDirection 和 YDirection共同确定了抛物线所在的平面- 上面提到的坐标系为局部坐标系。坐标系的Main Direction为抛物线所在平面的法向量
- 参数方程为: P(U) = O + U * U/(4 * F) *XDir + U * YDir
其中 O 、 XDir 、YDir分别为局部坐标系的原点 、X方向和Y方向
F为抛物线的焦距
Geom_Hyperbola
- 表示三维控件中的双曲线
Geom_BezierCurve
- 表示一条有理贝塞尔曲线或无理贝塞尔曲线.
- 一条无理贝塞尔曲线(non-rational Bezier curve )由一组极点(也称控制点)来表示。
- 一条有理贝塞尔曲线(rational Bezier curve)由一组极点以及每个极点对应权重来表示(a table of poles with varying weights)。极点表(poles table)是一组点的一维数组(an array of gp_Pnt points),权重表(weight table)是一个一维实数数组(an array of reals)。这些一维数组的起点索引都是从1开始的。
Geom_BoundedCurve
- 这是一个抽象的类。定义了三维空间中有界曲线(bounded curves)的共有行为。
- 一个有界曲线 由其first parameter 和last parameter限定了其边界。
- first parameter给出了该有界曲线的的起点。last parameter给出了该有界曲线的终点。该有界曲线的长度也是有限的。
- Geom包中提供了三个它的派生类。Geom_BezierCurve 、Geom_BSplineCurve 和Geom_TrimmedCurve 。
Geom_BSplineCurve
Geom_OffsetCurve
Geom_TrimmedCurve
面
Geom_Plane
- 表示三维空间中的一个平面
- 平面的参数方程如下:
P(u,v) = O + u *XDIR + * YDIR
Geom_Surface
Geom_BezierSurface
- 表示一条有理贝塞尔曲线或无理贝塞尔曲面.
- 一个无理贝塞尔曲面(non-rational Bezier surface )由一组极点(也称控制点)来表示。
- 一个有理贝塞尔曲面(rational Bezier surface)由一组极点以及每个极点对应权重来表示(a table of poles with varying weights)。极点表(poles table)是一组点的二维数组(an 2D array of gp_Pnt points),权重表(weight table)是一个二维维实数数组(an 2D array of reals)。这些数组行和列起点的索引都是从1开始的。
Geom_BoundedSurface
- 作为三维空间中所有有界曲面(bounded surface)的基类。
- 一个有界曲面是由二维参数空间中范围来表示的。例如由参数u和v的范围来限定。
- 一个有界曲线由4条曲线限定,这四条曲线构成了有界曲面的边界:
在u方向上的u0 和 u1 位置的参数曲线
在v方向上的v0和 v1位置的参数曲线。- 有界曲线是有限的。他们的共有行为在Geom_Surface中定义。Geom包中提供了它的三个派生类Geom_BezierSurface、Geom_BSplineSurface和Geom_RectangularTrimmedSurface.
Geom_BSplineSurface
Geom_ConicalSurface
Geom_CylindricalSurface
Geom_OffsetSurface
Geom_ElementarySurface
Geom_OsculatingSurface
Geom_RectangularTrimmedSurface
Geom_SphericalSurface
Geom_SweptSurface
Geom_ToroidalSurface
Geom_SequenceOfBSplineSurface
Geom_SurfaceOfRevolution
Geom_SurfaceOfLinearExtrusion
方向 矢量 矩阵
Geom_Direction
- 表示一个非null的单位向量