CGAL的3D球形几何内核

1、介绍

3D球形内核的目标是在3D空间中或在给定球体上为用户提供关于球体、圆和圆弧的大量功能。这些功能需要对代数数进行计算,这促使创建一个新的内核概念,扩展CGAL内核概念,该概念仅限于FieldNumberType中的对象和功能。
这里所做的所有选择(接口、健壮性、表示等)都与CGAL内核中所做的选择一致,我们将用户称为2D和3D线性内核。

2、球形内核对象

Spherical_kernel_3引入了新的主要几何对象:圆弧(SphericalKernel::CircularArc_3))、圆弧的点(SphereKernel::CircularArcPoint_3)和线段(SphereKernell::LineArc_3),它们的端点是这种新类型的点。
CircularArcPoint_3:这个类表示一个圆弧上的点。它具有圆弧的半径、中心点、起点和终点等属性。CircularArcPoint_3主要用于圆弧上的点的表示,而不是整个圆弧。
CircularArc_3:这个类表示一个完整的圆弧,包括起点、终点、中心点和半径等属性。它还可以表示一个完整的圆,此时起点和终点重合。CircularArc_3主要用于圆弧的表示,而不是圆弧上的点。
LineArc_3:这个类表示一个线段或一个完整的直线,具有起点和终点两个端点。LineArc_3主要用于直线的表示。
SphereKernel:CircularArcPoint_3特别用于圆弧的端点以及球体、圆或圆弧之间的交点。这些点的坐标是二阶代数数。因此,内核在 Point_3上提供的一般谓词在FieldNumberType中具有坐标,在更高阶的代数扩展中需要大量的代数计算,因此没有在它们上提供,这解释了对新的点类型的需要。在这些新类型上提供了一组一致的谓词和构造。
一般功能:球形核目前实现了一组基本功能,如交集、比较、包含等,未来可能会提供更多功能。
相对于球体的功能
底层对象的接口是通过提供额外的操作来扩展的,这些操作只有在对象被考虑在同一球体上时才有意义。例如,只有当在给定的公共球体上观察两点时,两点的柱坐标或球面坐标的比较结果才是明确的。这些操作的表示需要以下定义:
坐标系。考虑一个圆心为c、半径为r的球体。使用以c为中心的笛卡尔坐标系,我们在该球体上定义了一个圆柱坐标系(θ,z),其中θ∈[0,2π),z∈[-r,r]。θ以弧度表示,并在z轴周围的xy平面上测量,从x>0开始,y=0。球体的z极值点是其北极和南极,分别定义为(θ,r)和(θ,−r),对于θ的任何值。观察球体上不同于极点的每个点对应于一个唯一的对(θ,z)。
子午线的定义。给定一个球体及其相关的圆柱坐标系,该球体的子午线是由具有相同坐标的点组成的圆弧(极点是端点)。一个包含球面两极的平面定义了两条子午线,一条在穿过两极的线的每一边。矢量M的方向与后一条直线的方向不同,它在球面上定义了一条唯一的子午线。子午线的平面是由M的方向和两极来定义的。M的意义消除了在这样定义的一对子午线中选择的歧义。在图11.1中,法向量n0和n1分别定义了S的两条子午线:圆弧A0和A1。![在这里插入图片描述](https://img-blog.csdnimg.cn/b557c28e07f64ca2976e629518b21cce.png在这里插入图片描述
球体上的圆的类型。给定一个球体,如果它只穿过一个极点,则该球体上的一个圆被称为极性的,如果它穿过该球体的两极,则称为双极性的,螺纹将球体分成两个相连的组件,每个组件都包含一个极点;任何其他圆都称为法线。在这里插入图片描述
球体上的四种圆。黑点是θ极值点。
θ-极值点。给定一个球面,一个法向圆的θ-极值点是圆与一条子午线相切的点,该子午线固定在球面的极点上。每个法向圆定义两个这样的点;极圆的θ-极值点是圆经过的极点。双极或螺纹圆上没有这样的点。这些定义如图11.2所示。请注意,θ-极值点不应与球面上任意弧的端点混淆。
球面上法线圆的θ极点的θ坐标是明确定义的。对于球面上的极线,包含两个极点且与该圆相切的平面包含两条不同的子午线。这些子午线的θ值是与极线同一θ极点相关的两个θ坐标。
θ-单调圆弧。如果球面上的任何子午线与圆弧最多相交一点,则称球面上的圆弧为θ-单调。有了这个定义,在螺纹圆上的圆弧总是θ-单调的,而在极圆或法圆上的圆弧如果不包含θ-极值点则是θ-单调的,除非它是一个端点。在双极圆上没有这样的弧。

3、软件设计

事实上,球形内核被记录为一个概念,提供了球形内核和两个模型:
Spherical_kernel_3<Kernel,AlgebraicKernelForSpheres>, 基础内核;预定义内核 Exact_spherical_kernel_3.

4、范例

第一个范例:计算生成球并计算相交
第二个范例:判断点在球形圆弧上
第三个范例:计算法圆的极值点,并对极值点进行比较

5、设计和实施历史

主要介绍该模块的引入和开发工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值