2D and 3D Linear Geometry Kernel
CGAL
主要有3个部分组成:
kernal
:它由恒定大小的不可修改几何图元对象和相应操作组成。几何图元对象既被表示为独立类,由表示类参数化,表示类指定用于计算的底层数字类型,几何图元对象也是内核类的成员,这使得内核具有更大的灵活性和适应性。
基本几何数据结构和算法:这些数据结构和算法由traits类参数化,traits类定义数据结构或算法与其使用的几何图元之间的接口。在许多情况下,CGAL
中提供的kernal
类可以用作这些数据结构和算法的traits类。
非几何类的三方库;
这一部分介绍了kernal
。kernal
包含恒定大小的对象,如点、矢量、方向、直线、射线、线段、三角形、等向矩形和四面体。每种类型都有一组可以应用于该类型对象的函数。您通常会找到访问函数(例如点的坐标)、点相对于对象的位置测试、返回边界框的函数、对象的长度或面积等。kernal
还包含一些基本操作,如仿射变换、交点检测和计算 以及距离计算。
1. Kernel Representations
我们的研究对象是d-维仿射欧几里德空间,这里我们主要讨论d=2和d=3的情况。空间中的对象是一组点,表示点的一种常见方法是使用笛卡尔坐标系。我们可以用 ( c 0 , c 1 , . . . , c d − 1 ) (c_0,c_1,...,c_{d-1}) (c0,c1,...,cd−1)表示点的坐标。另一种表示点的方法是齐次坐标系,使用(d+1)维 ( h 0 , h 1 , . . . h d ) (h_0,h_1,...h_d) (h0,h1,...h