CGAL学习记录

article/2025/9/21 13:02:18

CGAL学习记录

  • 前言
  • CGAL 介绍
  • CGAL Linux安装
  • CGAL Windos安装
  • CGAL 安装错误及解决办法
  • CGAL 安装后测试
  • CGAL I/O读写 Functions
  • CGAL OFF数据格式
  • CGAL OFF STL相互转换
  • CGAL 表面细化
  • CGAL 表面平滑
  • CGAL 表面补洞
  • CGAL 自相交检测
  • CGAL 提取中心线

前言

原先使用vtk有些小地方不是很理想,老大让研究下表面细分换成CGAL效果怎么样
以前从来没有接触过计算机图形这快,算了其实以前啥都没接触过自学了大半年qt,两个月vtk
这次学习新的开源库,记录下自己学习过程

每天看多少就自己记录多少,持续更新ing…

CGAL 介绍

CGAL开放源代码项目的目标是以C ++库的形式轻松访问有效且可靠的几何算法。
计算几何算法库提供了三角剖分,Voronoi图,多边形,单元复合体和多面体,曲线的排列,网格生成,几何处理,凸包算法等仅举几例。
所有这些数据结构和算法都对诸如点和线段之类的几何对象进行操作,并对它们执行几何测试。
这些对象和谓词在CGAL内核中重新组合。
支持库提供几何对象生成器和空间排序功能,以及矩阵搜索框架和线性和二次程序的求解器。它还提供了与第三方软件(如GUI库Qt,Geomview和Boost Graph库)的接口。

主要学习教程 https://doc.cgal.org/latest/Manual/index.html

CGAL Linux安装

开源库嘛,全平台支持.
官方说明 https://www.cgal.org/download.html
源码/安装包下载 https://github.com/CGAL/cgal/releases
我的镜像
链接: https://pan.baidu.com/s/1o46NVDF-5faGFv5jZm44yg 密码: 83re

安装方式分为两种

  1. 全平台均提供编译好的库 直接安装即可

我用的ubuntu 先只介绍linux下安装,windos随后用到时候再补上

Debian or Linux Mint 下安装
sudo apt-get install libcgal-dev
apt-get install libcgal-demo
ArchLinux 下安装
sudo pacman -S cgal
卸载
sudo apt-get remove libcgal-dev
sudo apt-get remove libcgal-demo

  1. 自己编译

自己编译的话下载这个(其他版本一样
在这里插入图片描述
我编译大概一分钟
一次成功,什么错误都没出现
我的环境
ubuntu18.04
qt5.11.2(没有没关系的,设置里设为off)
gcc7

我原来特别烦开源库自己编译,总是各种错误.编译好多次各种不同的之后发现,其实cmake出错很好办,
configure过程中错误的话就是配置错误
make过程中错误就是缺少库,去日志里看下少什么库,谷歌搜索下前五条一定有如何安装

make成功后要不要install,看你怎么用.
我工程都是直接用cmake写的,所以不用安装了,编译好就行了
在这里插入图片描述在这里插入图片描述

CGAL Windos安装

Windos 下安装使用 cgal

CGAL 安装错误及解决办法

用新电脑重新编译发现还是有错误的,缺少各种库,有个很方便的办法,直接安装官方提供编译好的的库,让后自己编译源码,让后卸载官方提供库。如果不按这个顺序直接编译,反正就是少各种第三方库

  1. 错误1
    Could NOT find GMP (missing: GMP_LIBRARIES GMP_INCLUDE_DIR)
    CMake Error at cmake/modules/CGAL_SetupDependencies.cmake:66 (message):
    CGAL requires GMP to be found
    Call Stack (most recent call first):
    CMakeLists.txt:673 (include)
    解决办法

安装GMP呗
sudo apt-get install m4 先安装m4
https://gmplib.org/官网下载
https://gmplib.org/manual/Installing-GMP.html官方安装教程
在这里插入图片描述
./configure --enable-cxx
make
make check
sudo make install

  1. 错误2
    Could NOT find MPFR (missing: MPFR_LIBRARIES MPFR_INCLUDE_DIR)
    CMake Error at cmake/modules/CGAL_SetupDependencies.cmake:66 (message):
    CGAL requires MPFR to be found
    Call Stack (most recent call first):
    CMakeLists.txt:673 (include)
    解决办法
    git clone https://github.com/qnzhou/PyMesh.git
    cd PyMesh
    git submodule update --init
    cd $PYMESH_PATH/third_party
    mkdir build
    cd build
    cmake …
    make
    make install

CGAL 安装后测试

用qt的话搞这种跨平台的很方便,直接新建纯c++项目,用cmake管理不要用qmake
跑一下这段测试程序(官方案例第一个,为了方便理解我中文注释了下

如果用qmake或者windos下用vs的话(上一步需要install),配置下includes 路径和lib路径
qmake这样添加
INCLUDEPATH+=XXXX .h路径
CONFIG(debug, debug|release):{
LIBS+=-LXXXXX lib路径
-lxxxxd
-lxxxxd
}else:CONFIG(release, debug|release):{
LIBS+=-LXXXXX lib路径
-lxxxx
-lxxxx
}
vs的话直接属性配置,添加路径就可以了

还是cmake最方便

cmake_minimum_required(VERSION 3.1.0)
project(cgalc)find_package(CGAL REQUIRED)
include(${CGAL_USE_FILE})add_executable(${PROJECT_NAME} "main.cpp")target_link_libraries(${PROJECT_NAME} ${CGAL_LIBS})
#include <iostream>
#include <CGAL/Simple_cartesian.h>typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;int main() {Point_2 p(1, 1), q(10, 10), m(5, 9);Segment_2 s(p, q);std::cout << "p位置:" << p << std::endl;std::cout << "q位置:" << q.x() << " " << q.y() << std::endl;std::cout << "m位置:" << m << std::endl;std::cout << "---------计算欧几里德距离的平方----------- " << std::endl;std::cout << "平方距离(p,q) = "<< CGAL::squared_distance(p, q) << std::endl;std::cout << "---------计算欧几里德距离的平方----------- " << std::endl;std::cout << "平方距离(线段(p,q), m) = "<< CGAL::squared_distance(s, m) << std::endl;std::cout << "---------判断共线----------- " << std::endl;std::cout << "p, q, m ";switch (CGAL::orientation(p, q, m)) {case CGAL::COLLINEAR:std::cout << "共线\n";break;case CGAL::LEFT_TURN:std::cout << "左侧\n";break;case CGAL::RIGHT_TURN:std::cout << "右侧\n";break;}std::cout << "---------计算中点----------- " << std::endl;std::cout << " 中点(p,q) = " << CGAL::midpoint(p, q) << std::endl;return 0;
}

输出结果
在这里插入图片描述

CGAL I/O读写 Functions

很坑,这么多年一个计算机图像库,三维竟然只支持off读写
而且还是那种四个点的小立方体,不是三角形的
搞得用起来很麻烦,off数据格式和常规的stl转off写在后边

为啥选择外部数据保存成off文件,cgal读取 处理 在写出off 让后其他库再打开这种贼二的方式,而不直接从内存换数据,因为cgal这玩意三维数据的cell竟然只有四点的立方体(今天刚接触,案例找了半天,表面模型数据结构,点索引我竟然只找到这一种四点确定的,随后找到了我再换成直接内存读写的)

Functions
template bool read_off
(std::istream &in, Polyhedron_3< PolyhedronTraits_3 > &P)
template std::istream & operator>>
(std::istream &in, Polyhedron_3< PolyhedronTraits_3 > &P)
template bool write_off (std::ostream
&out, Polyhedron_3< PolyhedronTraits_3 > &P) template std::ostream & operator<< (std::ostream &out,
Polyhedron_3< PolyhedronTraits_3 > &P)

read_off()
template
bool read_off ( std::istream & in,
Polyhedron_3< PolyhedronTraits_3 > & P
)
此函数从输入流中读取对象文件格式的多面体曲面,off,文件扩展名为.off,geomview[5]也理解此功能,并将其附加到多面体曲面p中。仅使用输入流中的点坐标和面来构建多面体。表面。不计算法向量和颜色属性。如果中的流不包含允许的多面体曲面,则会设置中输入流的ios::badbit,而p保持不变。
对于off,存在ascii和二进制格式。流自动检测格式并可以读取这两种格式。

write_off()
template
bool write_off ( std::ostream & out,
Polyhedron_3< PolyhedronTraits_3 > & P
)
此函数使用对象文件格式off将多面体曲面p写入输出流,文件扩展名为off,geomview[5]也理解此格式。输出为ascii格式。从多面体表面,只写点坐标和面。既不使用法向量也不使用颜色属性。
对于off,存在ascii和二进制格式。可以使用cgal修饰符为流选择格式,分别设置ascii_mode()和set_binary_mode()。修饰符set_pretty_mode()可用于在输出中允许(一些)结构化注释。否则,输出将没有注释。默认的写入方式是不带注释的ascii。

CGAL OFF数据格式

这篇文章很好的介绍了数据格式,不过不知道为啥这种科普文章也可以发表
三角网格文件OFF的格式分析及OFF到STL的转化
在这里插入图片描述
在这里插入图片描述

CGAL OFF STL相互转换

具体查看 CGAL OFF STL相互转换

CGAL 表面细化

具体查看 CGAL 表面细化
在这里插入图片描述在这里插入图片描述

CGAL 表面平滑

假期时候补上

CGAL 表面补洞

需要用到 Eigen3
具体查看 CGAL 选择某一孔进行补洞

在这里插入图片描述
在这里插入图片描述

CGAL 自相交检测

具体代码看 https://blog.csdn.net/a15005784320/article/details/104043454
在这里插入图片描述

CGAL 提取中心线

在这里插入图片描述
具体代码看 CGAL 提取中心线


http://chatgpt.dhexx.cn/article/HAbsYQU6.shtml

相关文章

CGAL Cookbook --CGAL简介

##前言 ## 接触CGAL已经有半年了&#xff0c;从最初的厌恶&#xff08;对于一个初学者来说&#xff0c;CGAL确实有点难度&#xff0c;它要求初学者有一定基础&#xff09;到后来的喜欢。现在觉得CGAL简直完美极了&#xff0c;虽然它存在一些BUG但是这并不妨碍我爱上CGAL。它的…

[CGAL] CGAL的编译与使用

文章目录 方法一&#xff1a;自己安装依赖库安装Boost安装CGAL安装Qt编译示例在VS中使用CGAL库引用boost引用gmp引用CGALHelloworld 报错处理在cmake配置时报错&#xff1a;未能找到Boost编译示例&#xff0c;未找到GMP编译Mesh_3例子报错&#xff1a;未能找到Eigen3编译demo/P…

CGAL学习之路(三):CGAL读写点云

文章目录 1 CGAL创建点云1.1 insert方式1.2 迭代器方式 2 CGAL读点云2.1 读取XYZ点云2.2 读取PLY点云2.3 ifstream读取XYZ \ PLY点云 3 CGAL输出点坐标3.1 输出点云所有坐标3.2 输出某一点的坐标3.3 输出XYZ坐标 4 CGAL保存点云&#xff08;XYZ | PLY&#xff09;5 添加法向量字…

【C++】CGAL学习笔记

一、HELLO WORLD 1. 官方文档&#xff1a;CGAL-TUTORIALS 2. 所有CGAL头文件都在子目录中。所有CGAL类和函数都在命名空间中。类以大写字母开头&#xff0c;全局函数以小写字母开头&#xff0c;常量全部大写。 3. 几何图元&#xff0c;如点、线等都定义在内核Kernel中 #inc…

自动化测试方案设计和实现

编辑推荐: 本文主要介绍了几种测试类型需求&#xff0c;以及自动化测试方案设计和实现&#xff0c;希望对您的学习有所帮助。 本文来自于知乎&#xff0c;由火龙果软件Alice编辑、推荐。 如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以8101198…

测试方案模板

&#xff08;iwebshop项目&#xff09;测试方案 &#xff08;仅供参考&#xff09; 文档版本控制 文档版本号 日期 作者 审核人 说明 V1.0 2017/11/24 陈.. 创建文档 1. 概述 【软件的错误是不可避免的&#xff0c;所以必须经过严格的测试。通过对…

测试方案/测试计划/测试报告,经常弄混要怎么区分?

目录 前言 1、测试方案和测试计划的区别 2、测试方案和测试计划什么时候编写 3、测试方案 4、测试计划 5、测试报告 前言 测试方案和测试计划&#xff0c;测试报告几乎都是每个测试人员都必须掌握的。但有时经常搞混&#xff0c;特别是测试方案和测试计划。 1、测试方案…

自动化测试方案

自动化测试体系方案 方案1全编写代码流程 UI自动化&#xff1a; 使用python或java&#xff0c;配合selenium库及pytest框架做UI自动化测试。&#xff08;通过selenium的webdriver驱动&#xff0c;驱使浏览器&#xff09; 1. WebDriver API&#xff08;基于Java、Python&…

SpringBoot - 应用程序测试方案

文章目录 PreSpring Boot 中的测试解决方案测试 Spring Boot 应用程序初始化测试环境SpringBootTestSpringBootTest - webEnvironment RunWith 注解与 SpringRunner 执行测试用例使用 DataJpaTest 注解测试数据访问组件Service层和Controller的测试使用 Environment 测试配置信…

测试计划和测试方案有什么区别?

一、测试计划 1、测试计划是什么&#xff1f; 测试计划是组织管理层面的文件&#xff0c;从组织管理的角度对一次测试活动进行规划。对测试全过程的测试范围、组织、资源、原则等进行规定和约束&#xff0c;并制定测试全过程各个阶段的任务分配以及时间进度安排&#xff0c;并…

测试方案的设计及模板

测试方案设计及模板 测试方案设计概括xx测试方案_模板1.引言2.测试策略3.测试设计4.测试资源5.输出文档6.修订记录推荐书籍 测试方案设计概括 xx测试方案_模板 1.引言 1.1目的 根据需要实现的需求与软件的设计架构&#xff0c;设计满足测试目标的方案&#xff0c;用来指导测试…

软件测试方案设计

文章目录 1、软件框架2、测试方案设计2.1、测试覆盖2.2、功能测试和压力测试2.3、自动化测试2.4、持续集成 1、软件框架 站在软件的角度&#xff0c;一个系统通常可以分为以下四个层次&#xff1a; 应用软件层(app layer)。用户重点自己开发的应用代码&#xff0c;例如我们的运…

又发现个新的全网资源搜索神器

平常用谷歌百度搜资源一个个翻很费劲&#xff0c;这里分享几个最新可用的全网网盘资源搜索神器&#xff0c;在公众号苏生不惑后台回复神器 获取软件下载地址。 混合盘 这个app聚合搜索多个网盘资源&#xff0c;可从数十个网盘搜索网站中检索出你需要的资源&#xff0c;app非常简…

magnetX,资源搜索神器!老司机快上车!

magnetX 中文版是一款非常好用的资源搜索神器&#xff0c;界面干净简洁并且不会有弹窗。而且可以通过关键字搜索&#xff0c;或者网址过滤这两种方式快速找到你想要的资源&#xff0c;并且还能配合WebTorrent在线播放&#xff0c;还可以配合下载工具进行一键下载资源&#xff0…

【森林SOU】小巧绿色版搜索神器

种子搜索神器是一款基于P2P技术的资源搜索软件&#xff0c;搜索神器有很多&#xff0c;其实下面为大家带来的这个搜索工具就很不错&#xff0c;小巧功能强大无需安装&#xff0c;这里有着十分全面的资源可以自由搜索&#xff0c;下载也没有什么速度限制&#xff0c;十分便捷&am…

2014 三款强大搜片神器 | 各种视频资源 | 电影电视剧搜索

您还在百度上搜索电影吗&#xff0c;即浪费时间有累眼睛&#xff0c;并且还经常找到的不是自己想要的资源(某位仁兄下来了几个G的葫芦娃~~)。 亲们的福音来了。三款超强大的搜索下载看片软件很适合你。 只要有了他们&#xff0c;找神马资源都会变的轻松&#xff0c;So Easy~~ 下…

分享几个好用的百度网盘搜索引擎

与大家分享几个好用的网盘搜索神器&#xff0c;方便大家搜索百度云网盘分享的资源文件。&#xff08;已测试&#xff0c;目前都可用&#xff09; 一、 盘搜 http://www.pansou.com/ 网站简洁&#xff0c;搜索即可出来结果&#xff0c;点击搜索结果就能跳转。 二、 飞鱼盘搜 h…

吊打本地搜索神器everthing,最快 最强的电脑本地搜索神器!

Windows的小伙伴应该都对Windows资源管理器 自带的『文件搜索功能』说一句“垃圾” 全盘搜索一个文件居然需要几十秒 而为了解决Windows搜索慢的问题 不少小伙伴应该都用过或者听说过『Everything』这个软件 不论磁盘空间多大、存有多少文件 Everything都能以毫秒级的速度搜…

推荐一些非常好用的网盘搜索神器

网盘工具的兴起&#xff0c;大多数的用户会在网盘上分享自己的资源。那么如何快速的在网盘上找到你想要的资源呢 ? 而今天推荐的就是一些网盘搜索引擎&#xff0c;它可以使我们快速搜搜索到自己想要的资源&#xff0c;从而提高了整体的搜索效率。下面将介绍一些搜索引擎&#…

easySearch:一款聚合资源搜索神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 大家好&#xff0c;我是免费哥。 今天给大家带来的资源是&#xff1a;资源聚合搜索神器easySearch 资料简介 这是一款Chrome浏览器插件&#xff0c;支持主流链接…