文章目录一、Open3D1.1简介1.2特点1.2.1语言方面1.2.1功能方面1.2.1上手难度二、PCL2.1简介2.2特点2.2.1语言方面2.2.2功能方面2.2.3上手难度三、CGAL3.1简介3.2特点3.2.1语言方面3.2.2功能方面3.2.3上手难度四、其他五、建议之所以会想起来去比较这些东西,主要是这些库自己都已经用过,有感而发吧,有些地方说的不对,欢迎评论,虽然我也不会改"~"。一、Open3D1.1简介Open3D是一个开源的点云和网格处理库,其支持快速开发处理3D数据。Open3D前端在c++和Python中公开了一组精心挑选的数据结构和算法;后端则是经过高度优化,并
我正在尝试从非流形网格中提取底层的2-流形(封闭曲面)。我正在使用CGAL进行网格操作。我想通过删除“自由面”来实现这一点。自由的意思是,至少有一个边是边界边的面。删除自由面最终可能会创建新的“自由面”.我想继续删除它们,除非没有面有边界边缘。例如,如果我有一个2球体和一个鳍状结构附加到它上面,我想通过删除鳍的所有面来获得2球体。在CGAL中,我不断迭代半边,如果我得到一个半边,其对面是_border,我删除半边的面事件(更准确地说是使用make_hole(h))。当无法进行此类删除时,我会继续迭代。typedefCGAL::Exact_predicates_inexact_const
我正在寻找在进程之间发送CGAL几何图形的最快方法(C++)。假设我们有2个进程-A和B。进程A正在生成几何图形,进程B正在显示它。我想以最快的方式连接它们。几何形状为CGALsPolyhedron类型。我知道我可以使用共享内存,但是我遇到了一些问题:当我想将进程A中的几何图形复制到共享内存时,我可以使用Polyhedron和OFF格式之间的流式传输,但我对此不感兴趣,因为转换到这种格式对我来说太慢了。我可以创建共享内存并使用“placementnew”在共享内存中创建我的对象并克服流式传输和转换的开销,但是我无法通过内部Polyhedron函数进一步控制内存分配。(例如,当使用Pol
我正在尝试创建类型为map>的STL映射(AABBtree's的map)当我尝试为map分配一个值时,例如(此代码仅用于演示目的)://CGALincludesbegin#include#include#include#include#include#include//CGALincludesend/**CGALtypedef'sforinitialization*/typedefCGAL::Simple_cartesianK;typedefK::FTFT;typedefK::Point_3Point_3;typedefK::Segment_3Segment;typedefCGAL::
下面的代码假定输入是点,而不是线段(这是错误的)。关注此2DVoronoiDiagramAdaptor例如,我正在尝试编写一个程序,它将输入线段作为输入并打印Voronoi图的面的顶点。这是我的尝试(保留示例的includes/typedef)://standardincludes#include#include#include//includesfordefiningtheVoronoidiagramadaptor#include#include#include#include#include//typedefsfordefiningtheadaptortypedefCGAL::Ex
3.Arrangement查询Arrangement里面最重要的查询操作是point-location,给定一个点,查找到包含这个点的Arrangement。通常情况下,point-location查询得到的结果是Arrangement的一个face,退化情况下会是一个edge,查一个重合的点。3.1point-Location查询3.3 垂直射线扫描另一个经常用到Arrangement的查找,是垂直射线扫描查找:给定一个查找点,哪些Arrangement单元会跟从这个点发射的垂直射线相交?一般情况下,可能这个射线交到一边edge,也有可能交到一个vertex,或者这个Arrangement单
我对1000个均匀随机点的Delaunay三角剖分结果看起来根本不正确(见图)。有些点似乎属于异常多的三角形......有什么想法吗?详细信息:CGAL3.4,WindowsXP这是我使用的类型:typedefCGAL::Exact_predicates_inexact_constructions_kernelK;typedefCGAL::Triangulation_2Triangulation;typedefTriangulation::PointPoint;显示如下:delaunay_c::Triangulation::Edge_iteratoreit=T.edges_begin(
我对某些点进行了Delaunay三角剖分,并希望按长度升序迭代其中的所有边,以构建最小跨度线程。我试过以下方法,但无法编译:typedefCGAL::Exact_predicates_inexact_constructions_kernelK;typedefCGAL::Delaunay_triangulation_2T;typedefK::Point_2P;typedefT::Vertex_handleVh;typedefT::Vertex_iteratorVi;typedefT::Edge_iteratorEi;boolsortFunction(Eia,Eib){K::FTla,lb
3D凸包算法一、概述二、静态凸包构造1.Traits特征类2.极端点3.半空间相交4.凸性检验三、动态凸包构造四、性能一、概述一个点集S∈R3是凸的,如果对于任意两点p和q在集合中,具有端点的线段p和q包含在S。集合的凸包P包含点集S的最小凸多边体。如果这个集合S的某些点是这个构成P凸多边体的顶点,则称其为(关于的)P的极值点。如果一个点集只包含极值点,就被称为强凸的。本章描述了CGAL中用于生成三维凸包的函数,以及用于检查点集是否为强凸的函数。在CGAL中,可以通过两种方式计算三维空间中点集的凸包:使用静态算法或使用三角剖分来获得完全动态的计算。二、静态凸包构造函数convex_hull_3
首先,我是CGAL的新手,但经常用C++编程。我想使用CGAL来构造球体上点的Voronoi图。我自己为我的一项研究实现了一个,但数据结构不是很通用,我想使用像CGAL这样更健壮的工业库。从CGAL的文档来看,似乎我们需要使用3DDelaunay三角剖分结合凸包。另外,我找到一篇论文RobustandEfficientDelaunayTriangulationsofPointsonOrClosetoaSphere,它使用CGAL作为基础,但我找不到它的代码。所以任何人都可以提供有关如何在CGAL中执行此操作的示例?CGAL是否有计划用更高效的算法直接支持球形Delaunay和Voron