Ubuntu 安装CGAL

一、什么是CGAL

CGAL(Computational Geometry Algorithms Library)是一个广泛使用的开源库,主要用于计算几何算法的实现。该库提供了一系列高效、可靠和易于使用的几何算法和数据结构,适用于各种应用领域。以下是 CGAL 的主要功能和应用场景:

主要功能

  1. 几何数据结构

    • 点、向量、线段、多边形、平面等基本几何对象。
    • KD 树、四叉树、三叉树等空间分割数据结构。
  2. 计算几何算法

    • 凸包算法:计算二维和三维空间中的凸包。
    • 三角剖分:包括 Delaunay 三角剖分、约束 Delaunay 三角剖分、Conforming Delaunay 三角剖分等。
    • Voronoi 图:生成 Voronoi 图,并支持各种查询操作。
    • 布尔运算:多边形和多面体的布尔运算,如并、交、差、对称差等。
    • Nef 多面体:用于表示多面体的布尔运算和变换。
  3. 数值几何算法

    • 最近点查询:基于 KD 树和 Delaunay 三角剖分的最近点查询。
    • 点云处理:包括点云的简化、重建、配准等。
  4. 曲线和曲面处理

    • NURBS 曲线和曲面:支持非均匀有理 B 样条(NURBS)的表示和操作。
    • 平滑和细分:曲线和曲面的平滑和细分算法。

二、安装步骤

在Ubuntu上安装CGAL的步骤如下:

打开终端。,更新包管理器的索引列表:

sudo apt-update

安装CGAL的依赖库:

sudo apt-get install libcgal-dev

如果你需要编译使用了CGAL的C++程序,确保你的编译器能够找到CGAL的头文件和库。通常,CGAL会被安装在标准的位置,但如果你的编译器需要特殊配置,你可以查看/usr/include/CGAL目录和/usr/lib/x86_64-linux-gnu/cgal(或者你的系统架构相关的目录)。

三、示例

简单的距离计算demo

#include <CGAL/Simple_cartesian.h>
#include <CGAL/point_generators_2.h>
#include <CGAL/algorithm.h>
#include <iostream>

typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;

int main() {
    // 定义两个点
    Point_2 p(1.0, 1.0);
    Point_2 q(4.0, 5.0);

    // 计算两点之间的距离
    double distance = CGAL::squared_distance(p, q);
    std::cout << "Squared distance between p and q is: " << distance << std::endl;

    return 0;
}

CMakeList.txt

cmake_minimum_required(VERSION 3.1)
project(cgal_demo)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找 CGAL 包
find_package(CGAL REQUIRED)

# 添加可执行文件
add_executable(cgal_demo cgal_demo.cpp)

# 链接 CGAL 库
target_link_libraries(cgal_demo CGAL::CGAL)

运行报错

The variable CMAKE_BUILD_TYPE is set to "". For performance reasons, you should set CMAKE_BUILD_TYPE to "Release".

生成 Makefile 并设置 CMAKE_BUILD_TYPERelease

cmake -DCMAKE_BUILD_TYPE=Release ..

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车报价资讯app小程序模板源码

蓝色实用的汽车报价&#xff0c;汽车新闻资讯&#xff0c;最新上市汽车资讯类小程序前端模板。包含&#xff1a;选车、资讯列表、榜单、我的主页、报价详情、资讯详情、询底价、登录、注册、车贷&#xff0c;油耗、意见反馈、关于我们等等。这是一款非常全的汽车报价小程序模板…

VMware CentOS7 Linux 网络配置

本文主要描述VMware虚拟机的网络配置。 如上所示&#xff0c;在CentOS Linux虚拟机中设置网络连接使用桥接模式&#xff0c;该模式对接主机物理网络&#xff0c;直接由主机的物理网络的DHCP服务器动态分配IP地址&#xff0c;或者在CentOS Linux的操作系统的网络配置中设置静态的…

Stowaway搭建隧道打CFS内网靶场

目录 渗透带出主机阶段 先把我们的服务端上传到kali ​先把我们的客户端上传到目标机 客户端去连接我们的kali机端口去上线 出现admin&#xff0c;上线成功 detail相当于msf的sessions​ 和msf差不多功能&#xff0c;但是我们用它主要是搞隧道代理 抓发的 ​开启socks…

SQL之delete、truncate和drop区别

MySQL删除数据的方式都有哪些&#xff1f; 常用的三种删除方式&#xff1a;通过 delete、truncate、drop 关键字进行删除&#xff1b;这三种都可以用来删除数据&#xff0c;但场景不同。 一、从执行速度上来说 drop > truncate >> DELETE;二、从原理上讲 1、DELET…

多模态MLLM都是怎么实现的(11)--从SadTalker到快手LivePortait

我之前出差带休假差不多两个礼拜吧&#xff0c;今天回北京更新一篇 我确实找到了一个有意思的东西&#xff0c;LivePortrait 这东西开源了&#xff0c;你可以认为是目前做得最好的"Sadtalker"&#xff0c;国内也有dream-talker&#xff0c;EMO之类的。 我之前看EMO的…

一文详解多层感知机(MLP)

文章目录 What(是什么)Where&#xff08;用在哪&#xff09;How&#xff08;怎么用&#xff09;多层感知机解决分类问题&#xff08;以minist分类为例&#xff09;多层感知机解决回归问题多层感知机解决噪声处理的问题 What(是什么) 多层感知机&#xff08;Multilayer Perceptr…

A Threat Actors 出售 18 万名 Shopify 用户信息

BreachForums 论坛成员最近发布了涉及 Shopify 的重大数据泄露事件。 据报道&#xff0c;属于近 180,000 名用户的敏感数据遭到泄露。 Shopify Inc. 是一家总部位于安大略省渥太华的加拿大公司。 开发和营销同名电子商务平台、Shopify POS 销售点系统以及专用于企业的营销工…

Vue3+.NET6前后端分离式管理后台实战(二十九)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(二十九)

Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable

文章目录 一&#xff0c;创建Module报错二&#xff0c;原因分析三&#xff0c;解决方案1&#xff0c;点击上图的加号&#xff0c;把JDK8添加进来即可2&#xff0c;点击左侧[Project]&#xff0c;直接设置SDK为JDK8 四&#xff0c;配置检查与验证 一&#xff0c;创建Module报错 …

网络基础:IS-IS协议

IS-IS&#xff08;Intermediate System to Intermediate System&#xff09;是一种链路状态路由协议&#xff0c;最初由 ISO&#xff08;International Organization for Standardization&#xff09;为 CLNS&#xff08;Connectionless Network Service&#xff09;网络设计。…

数据统计与数据分组18-25题(30 天 Pandas 挑战)

数据统计与数据分组 1. 知识点1.18 分箱与统计个数1.19 分组与求和统计1.20 分组获取最小值1.21 分组获取值个数1.22 分组与条件查询1.23 分组与条件查询及获取最大值1.24 分组及自定义函数1.25 分组lambda函数统计 2. 题目2.18 按分类统计薪水&#xff08;数据统计&#xff09…

关于忠诚:忠于自己的良知、理想、信念

关于忠诚&#xff1a; 当我们面对公司、上司、爱人、恋人、合作伙伴还是某件事&#xff0c;会纠结离开还是留下&#xff0c;这里我们要深知忠诚的定义&#xff0c;我们不是忠诚于某个人、某件事、或者某个机构&#xff0c;而是忠诚于自己的良知&#xff0c;忠诚于自己的理想和…

pin是什么?管脚

1.平面分割 1)启动Allegro PCB design &#xff0c;打开.brd。深色部分属于一个net&#xff0c;要做一下修改&#xff0c;将上面的pin包含进shape中&#xff0c;i进行a&#xff0c;b两步操作&#xff0c;删除以前存在的Anti Etch下的line&#xff0c;再将其进行补齐 使它保住上…

grpc-go客户端接口添加

【1】 proto相关文件同服务端&#xff0c;如已经生成&#xff0c;可以直接使用服务端的文件&#xff08;包&#xff09; 【2】新建一个目录“WHG_CLIENT”&#xff0c;目录下新建一个main.go文件 package mainimport ("context""log""grpc-go-maste…

Spring的核心概念理解案列

IDEA开发的简单“登陆成功”小项目 IDEA项目结构&#xff1a; 每一部分代码和相应的解读&#xff1a; com.itTony文件下有dao&#xff08;实体&#xff09;层&#xff0c;service&#xff08;服务&#xff09;层&#xff0c;编写的2个类&#xff08;HelloSpring和TestSpring&…

RK3588编译rkmpp,拉取海康威视网络摄像头264码流并运行yolo

硬件&#xff1a;EVB评估版 SOC&#xff1a;Rockchip RK3588 背景&#xff1a; 由于项目需要&#xff0c;需要拉取264码流&#xff0c;并通过将yolov5s.pt将模型转化为rknn模型&#xff0c;获取模型分析结果。取流可以通过软件解码或者硬件解码&#xff0c;硬件解码速度更快&…

yum install epel-release 遇到的问题

问题&#xff1a; 安装epel的时候,执行 yum install -y epel-release 报错“Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.…

【TB作品】51单片机 Proteus仿真 00002仿真-智能台灯色调倒计时光强

实验报告&#xff1a;基于51单片机的智能台灯控制系统 背景 本实验旨在设计一个基于51单片机的智能台灯控制系统&#xff0c;该系统可以通过按键进行手动控制&#xff0c;并能根据环境光强度自动调节台灯亮度。此外&#xff0c;系统还具备倒计时关灯功能。 器件连接 51单片…

四大常见的排序算法JAVA

1. 冒泡排序 相邻的元素两两比较&#xff0c;大的放右边&#xff0c;小的放左边 第一轮比较完毕之后&#xff0c;最大值就已经确定&#xff0c;第二轮可以少循环一次&#xff0c;后面以此类推 如果数组中有n个数据&#xff0c;总共我们只要执行n-1轮的代码就可以 package Bu…

ARMv8寄存器详解

文章目录 一、ARMv8寄存器介绍二、通用寄存器三、 PSTAE寄存器四、特殊寄存器五、系统寄存器 一、ARMv8寄存器介绍 本文我来给大家介绍一下ARMv8的寄存器部分&#xff0c;ARMv8中有34个寄存器&#xff0c;包括31个通用寄存器、一个栈指针寄存器SP(X31),一个程序计数器寄存器PC…