草庐IT

CGAL-2D和3D线性几何内核-点和向量-内核扩展

文章目录1.介绍1.1.鲁棒性2.内核表示2.1.通过参数化实现泛型2.2.笛卡尔核2.3.同质核2.4.命名约定2.5.内核作为trait类2.6.选择内核和预定义内核3.几何内核3.1.点与向量3.2.内核对象3.3.方位和相对位置4.谓语和结构4.1.谓词4.2.结构4.3.交集和变量返回类型4.4.例子4.5.构造性谓词5.可扩展内核5.1.介绍5.2.举例5.3.限制6.投射特征类7.设计和实现历史1.介绍计算几何算法库(CGAL)是用c++编写的,由三个主要部分组成。第一部分是内核,它由固定大小的不可修改的几何原语对象和对这些原语对象的操作组成。这些对象既表示为独立的类(由表示类参

CGAL的安装与在VS中的配置

CGAL的安装与在VS中的配置参考:CGAL编译与使用(Windows)·语雀(yuque.com)​CGAL+VS+Qt环境配置_balduck的博客-CSDN博客_cgalqt从5.0版本开始,CGAL仅是一个头文件库,这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。CGAL主要依赖项是boostCGAL还依赖GMP和MPFR(CGAL会提供编译好的)如果需要使用CGAL的可视化功能,则还需要Qt库源码安装CGAL5.4.1+Windows+VS2022+QT5.13.1安装BoostBoost是CGAL的强制依赖库。下载地址下载boost_1_79_0-msvc-14.3-64

c++ - 为什么 KD 树对于点集中的最近邻搜索如此缓慢?

我正在使用CGAL的(最新的)KD-tree实现来搜索点集中的最近邻。而且Wikipedia和其他资源似乎表明KD-trees是要走的路。但不知何故,它们太慢了,而且Wiki还建议它们的最坏情况时间为O(n),这远非理想。[开始编辑]我现在使用“nanoflann”,它比CGAL中的等效项快约100-1000倍用于K-neighbor搜索。我使用“IntelEmbree”进行光线转换,比CGAL的AABB树快100-200倍。[结束编辑]我的任务如下所示:我有一个巨大的积分集,比如说最多100米奥。积分!!并且它们的分布在三角几何的表面上(是的,光子示踪剂)。所以可以说它们在3D空间中

c++ - 为什么 KD 树对于点集中的最近邻搜索如此缓慢?

我正在使用CGAL的(最新的)KD-tree实现来搜索点集中的最近邻。而且Wikipedia和其他资源似乎表明KD-trees是要走的路。但不知何故,它们太慢了,而且Wiki还建议它们的最坏情况时间为O(n),这远非理想。[开始编辑]我现在使用“nanoflann”,它比CGAL中的等效项快约100-1000倍用于K-neighbor搜索。我使用“IntelEmbree”进行光线转换,比CGAL的AABB树快100-200倍。[结束编辑]我的任务如下所示:我有一个巨大的积分集,比如说最多100米奥。积分!!并且它们的分布在三角几何的表面上(是的,光子示踪剂)。所以可以说它们在3D空间中

c++ - Bentley-Ottmann 算法是否有强大的 C++ 实现?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭去年。ImprovethisquestionBentley-Ottoman算法在一组线段中查找所有交叉点。对于一个众所周知且重要的算法,Bentley-Ottmann算法的C++实现似乎很奇怪——可以处理所有退化情况的实现(即,对扫描线和交叉点的数量没有特殊假设,等等on)—根本不可用。我能找到的唯一代码是here,但它似乎无法处理thegeneralizedcase.Bentley-Ottmann算

c++ - Bentley-Ottmann 算法是否有强大的 C++ 实现?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭去年。ImprovethisquestionBentley-Ottoman算法在一组线段中查找所有交叉点。对于一个众所周知且重要的算法,Bentley-Ottmann算法的C++实现似乎很奇怪——可以处理所有退化情况的实现(即,对扫描线和交叉点的数量没有特殊假设,等等on)—根本不可用。我能找到的唯一代码是here,但它似乎无法处理thegeneralizedcase.Bentley-Ottmann算

c++ - 使用 CMake 编译静态可执行文件

对于一个项目,我需要创建一个包含我使用的所有库(opencv、cgal)的可执行文件,以便在没有这些库的计算机上执行它。目前,这是我的CMakeLists.txt(我使用linux)。cmake_minimum_required(VERSION2.8)#set(CMAKE_CXX_FLAGS_DEBUG"${CMAKE_CXX_FLAGS_DEBUG}-Wall")set(CMAKE_CXX_FLAGS_RELEASE"${CMAKE_CXX_FLAGS_RELEASE}-Wall-O2")project(labeling)set(CMAKE_FIND_LIBRARY_SUFFIXES

c++ - 使用 CMake 编译静态可执行文件

对于一个项目,我需要创建一个包含我使用的所有库(opencv、cgal)的可执行文件,以便在没有这些库的计算机上执行它。目前,这是我的CMakeLists.txt(我使用linux)。cmake_minimum_required(VERSION2.8)#set(CMAKE_CXX_FLAGS_DEBUG"${CMAKE_CXX_FLAGS_DEBUG}-Wall")set(CMAKE_CXX_FLAGS_RELEASE"${CMAKE_CXX_FLAGS_RELEASE}-Wall-O2")project(labeling)set(CMAKE_FIND_LIBRARY_SUFFIXES

CGAL 点云数据生成DSM、DTM、等高线和数据分类

目录1、不规则三角网(TIN)2、数字表面模型(DSM)3、数字地形模型(DTM)3.1带有信息的TIN3.2识别连接组件3.3数据清洗3.4孔洞填充和网格重建4光栅化5等高线生成5.1绘制等高线图5.2分割成折线5.3等高线简化6、点云分类7、完整代码示例8、附:Color_ramp.h  在GIS应用软件中使用的许多传感器(如激光雷达)都会产生密集的点云。这类应用软件通常利用更高级的数据结构:如:不规则三角格网(TIN)是生成数字高程模型(DEM)的基础,也可以利用TIN生成数字地形模型(DTM)。对点云数据进行分类,提取地面、植被和建筑点(或其他用户定义的标签)等分类数据,从而使得获取的

c++ - CGAL 二维德劳内三角剖分 : How to get edges as vertex id pairs

我有一组二维点,每个点都有一个关联的ID。(例如,如果点存储在数组中,则id是每个点0,....,n-1的索引)。现在我创建了这些点的Delaunay三角剖分,并想列出所有有限边。对于每条边,我想用相应的2个顶点表示点的ID。示例:如果点0和点2之间存在一条边,则(0,2)。这可能吗?#include#include#includetypedefCGAL::Exact_predicates_inexact_constructions_kernelK;typedefCGAL::Delaunay_triangulation_2Delaunay;typedefK::Point_2Point;