首页 > 其他分享 >CGAL入门——浅谈CGAL

CGAL入门——浅谈CGAL

时间:2023-08-09 22:37:53浏览次数:37  
标签:kernel 浅谈 对象 CGAL 算法 精确 几何 入门

CGAL官网https://doc.cgal.org/latest/Manual/index.html

最近在学习CGAL,发现CGAL中文资料太少了,官网示例代码也很少注释,还加入了很多自定义的很少见过的名词,易读性略差,学习起来有点难度

赶紧记录一下学习过程,怕以后忘了

 

1.简介

CGAL(Computational Geometry Algorithms Library,计算几何算法库)该库选用了C++模板编程范式,提供方便,高效,可靠的几何算法。

CGAL主要分为三部分:

  1)内核(kernel):基本的几何对象(比如点,向量,方向,直线,射线,线段,三角形等),以及作用在这些对象的一些操作,一般有访问函数(比如一个点的坐标),测试点和这个对象的位置关系,得到对象的包围盒子的函数,长度,面积等等.核心中还包含一些基本超作,比如仿射变幻,相交的检测与计算,距离计算);

  2)基础几何数据结构和算法:它们被特征类参数化.而特征类定义了数据结构或者算法和它们使用的原生类型(primitives)的接口,在很多情况下CGAL中的核心类可以作为这些数据结构或算法的特征类使用.

  3)与几何无关的组件:如迭代器、随机数源、I/O支持以及一些可视化工具等

 

2.CGAL内核

先介绍2个名词

  1)predicates:谓词(断言),返回不二或枚举类型,用来判断一些几何关系的一类函数,所以返回值是一个离散值

  2)constructions:构造,即生成几何对象的一类函数,返回数字或者几何元素

CGAL根据不同精度预定义了3个kernel

  1)笛卡尔坐标内核(CGAL::Simple_cartesian<double>):也可以是float,精度一般,但是效率最高

  2)精确谓词不精确构造(GAL::Exact_predicates_inexact_constructions_kernel):提供精确断言,但是生成几何对象可能存在误差

  3)精确谓词精确构造(CGAL::Exact_predicates_exact_constructions_kernel):提供精确断言,精确地生成几何对象,精度最高,但是效率最差

这三种预定义核心组件都是基于笛卡儿坐标系核心的,只是其构造的域参数类型不同。

 

具体使用后面篇幅再介绍。

 

因为是刚接触学习,理解还不太深刻,所以该篇会处于一种持续的不定期更新状态......

标签:kernel,浅谈,对象,CGAL,算法,精确,几何,入门
From: https://www.cnblogs.com/ping-code/p/17618156.html

相关文章

  • 浅谈项目架构设计
    整理自b站up主主要一点是最合适的是最好的,不必为了过于追求某项技术而冗余!一.功能性需求1.跟实际的业务需求是对应的!2.所使用的技术框架是不是够先进,文档是否完善,使用过程中容易排查到问题3.技术是否为开源的,够不够活跃,更新频率等4.成本:学习成本,使用成本,迁移成本,维护成本,要......
  • Spring Boot 链路追踪 SkyWalking 入门
    1.添加SkyWalking依赖:打开您的SpringBoot项目的pom.xml文件,并在<dependencies>标签中添加以下依赖:xml<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.0.0</ver......
  • Frida注入微信hook入门篇
    首先找到frida官网地址:https://frida.re/安装python环境此处为win系统,需要根据自己环境进行安装如输入python后输出版本号即安装成功C:\Users\ASUS>pythonPython3.11.4(tags/v3.11.4:d2340ef,Jun72023,05:45:37)[MSCv.193464bit(AMD64)]onwin32Type"hel......
  • go语言入门1---环境搭建以及helloworld
    go语言入门11环境搭建1.1安装go首先,在go官网下载,下面两个都行go版本-windows-amd64.msi,一直next就行,安装目录写成C:\Go\就行go版本-windows-amd64.zip压缩包直接压缩,将go文件直接移到C盘下新建的Go文件夹下。1.2添加环境变量将C:\Go\bin添加到环境变量path中1.3测试go......
  • FastAPI入门引导
    FastAPI是一个现代、快速(高性能)的Web框架,用于基于标准Python类型提示使用Python3.7+构建API。主要特点是:快速:非常高的性能,与NodeJS和Go相当(感谢Starlette和Pydantic)。可用的最快的Python框架之一。快速编码:将开发功能的速度提高约200%至300%。*更少的错误:减少约4......
  • 浅谈AI浪潮下的视频大数据发展趋势与应用
    视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步,人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式,视频内容已经不再是单一的娱乐方式,更是涉及到教育、医疗、商业等各个领域。为了满足用户个性化的需求,视频大数据的分析和挖掘......
  • Java入门题-密保验证
    问题:设计一个密保验证,由4位随机字母组成,用户输入验证码验证,一共5次机会重要:随机字母、随机组合、字母分大小写代码:需要引入importjava.util.Random;  importjava.util.Scanner; intVF=0;//用于循环while(VF<5){//规定验证5......
  • windows下Sphinx + php 简易入门案例
    Sphinx3.5.1windows使用流程官网地址下载地址下载完成后会有这样一个目录,新建data和log目录存放数据和日志将etc目录的sphinx.conf.dist文件复制一份到bin目录下,将.dist删除以下是我的配置文件,可以根据下面的进行修改,如果有特别的需求可以看下面3.x的文档sourcedoc......
  • hibernate入门
    Hibernate是一个开源的ORM(对象关系映射)框架,它可以将Java对象与数据库表进行映射,从而实现面向对象的数据持久化。使用Hibernate,可以避免手动编写SQL语句,从而提高开发效率,并且可以轻松地切换不同的数据库。基础概念entity实体类是映射到数据库表中的Java类,它包含了与数......
  • 计算几何入门
    计算几何入门目录计算几何入门一向量1.叉积a.定义b.应用凸包寻找凸包算法1:Graham一向量我认为唯一比较有用的东西是向量的叉积1.叉积a.定义对于两个0起点开始,最终点为(a1,a2)和(b1,b2)的两个向量,其叉积为a1*b2-a2*b1。b.应用可以判断两个向量的旋转方向:假如A和B......