问题标签 [cgal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
359 浏览

c++ - 调试使用 CGAL 和 Xcode 的代码

我想使用 Xcode 来调试使用 CGAL 的程序,但我无法让 Xcode 运行程序或在断点处停止。Xcode 将编译程序(我通过在终端窗口中运行结果来验证这一点)。我可以设置断点,但是当我单击“运行”按钮时,Xcode 似乎没有运行程序。

我将代码简化为这个简单的示例:

我使用 cgal_create_CMakeLists 创建了 Xcode 项目。此脚本为我创建项目文件:

我在 OS X 10.8.3 上使用 CGAL 4.1 和 Xcode 4.6.1(在 MacBook 上运行,2008 年末)。

我对 Xcode 非常缺乏经验,所以这可能是一个简单的错误(错过设置等)。

0 投票
1 回答
430 浏览

algorithm - 将不规则圆柱体细分为等体积段

我想知道是否有人对如何解决这个问题有任何想法。

我有一个 3D 中的“不规则”(意味着直径沿长度方向不是恒定的)圆柱形物体。我想将其细分为体积相等的较小部分(长度方向)。这种事情有什么算法吗?

谢谢

0 投票
1 回答
104 浏览

boost - 如何将 Boost Interprocess 分配器与 CGAL Nef_polyhedron_3 一起使用?

CGAL 中有两种类型的 3D 多边形,Polyhedron 和 Nef_polyhedron。前者允许将分配器指定为其第四个模板:

http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Polyhedron/Chapter_main.html#Subsection_25.3.5

但是, Nef_polyhedron_3 似乎没有。

然而,它确实有 iostream 运算符,用于解析到/从内部字符串表示:

https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_3/SNC_io_parser.h

但这确实非常缓慢。

然而,看看那个 SNC 解析器代码,它似乎在内部仍然使用分配器作为其内部结构(一个 snc 对象)。但是,即使我可以将这些分配给我的静态缓冲区(传递给另一个进程),我也看不到 Nef_polyhedron_3 构造函数或访问器函数中允许我重建一个的任何内容。

编辑:进一步研究一下,我注意到有一个来自 SNC 结构的构造函数https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_polyhedron_3.h

SNC_structure 对其内部数据使用分配器(但不为其自身):

https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Nef_3/SNC_structure.h

麻烦的是,这似乎只在编译时设置 - 我只需要为我知道需要发送到另一个进程的多边形分配一个特定的缓冲区。

编辑 2:我刚刚注意到 Nef_polyhedron_3 超类之一是 Handle_for:

在那里,它本身也使用了分配器:

https://github.ugent.be/divhaere/cgal/blob/master/include/CGAL/Handle_for.h

我仍然不清楚我到底是如何插入的。

马科斯

0 投票
2 回答
2533 浏览

c++ - 保存 CGAL alpha 形状曲面网格

我从未使用过 CGAL,几乎没有 C/C++ 经验。但是按照谷歌,我设法在 Windows 7 64 位机器上使用 Visual Studio 2010 编译示例“Alpha_shapes_3”(\CGAL-4.1-beta1\examples\Alpha_shapes_3)。

在此处输入图像描述

现在,如果我们检查程序“ex_alpha_shapes_3”的源代码,我们会注意到一个名为“bunny_1000”的数据文件在 3d 点簇所在的位置是红色的。现在我的问题是如何更改源代码,以便在为给定点计算 alpha 形状后,将 alpha 形状的表面网格保存/写入外部文件中。它可以是简单的多边形列表和它们各自的 3D 顶点。我猜这些多边形将定义 alpha 形状的表面网格。如果我能做到这一点,我可以在我熟悉的外部工具中看到 alpha 形状生成程序的输出。

我知道这很简单,但由于我对 CGAL 的了解有限,我无法弄清楚这一点。

我知道你们有代码,但我再次粘贴它以完成。

在互联网上搜索了很多之后,我发现可能我们需要使用类似的东西

但是我仍然完全不知道如何在上面的代码中使用它!

0 投票
1 回答
149 浏览

cgal - CGAL::assign 函数

每个人。我是 CGAL 图书馆的新手。在这里,我正在阅读 CGAL 演示。该代码经常使用 CGAL::assign 函数,但我找不到对它的任何引用。任何人都可以指出我在哪里可以看到它是如何实现的?提前致谢!

0 投票
1 回答
562 浏览

c++ - 如何对使用 CGAL 设置的 3D 点执行范围搜索?

所以我看到了这个不错的2D Range and Neighbor Search我还看到了dD Range 和 Segment Trees 但我不明白如何在 3D 点集上执行 3D Range 和 Neighbor Search。一般来说,我想查询一些点容器以获取R与某个给定点相距一定距离的点数组P。(备注:为什么我不想手动进行 - 这种搜索可以是 CPU/GPU/SSE 优化的,我想使用经过测试的可靠高效库来支持我自己的)

0 投票
2 回答
437 浏览

cgal - 如何在 Windows 中安装 MPFI 库?

那里!

我想执行示例程序 Surface_reconstruction_points_3。

我认为该程序还需要第三个库 MPFI。

所以我从http://mpfi.gforge.inria.fr/下载了这个库。

我将其解压缩到正确的文件夹并将其链接到系统路径。

使用 cmake-gui 配置示例程序后,

我发现了一些错误消息,“找不到 MPFI(缺少:MPFI_LIBRARIES)”。

如何使用 Visual Studio 2008 在 Window 中安装 MPFI 库?

0 投票
0 回答
298 浏览

computational-geometry - 如何有效地找到长方体和四面体之间的交点

我需要一种有效的方法来找到长方体和四面体的交点。

我是 CGAL 的新手,但在使用它方面有一些基本经验。目前,我正在关注一个帖子并使用建议的交叉操作N1 * N2,其中N1N2Nef 多面体。但它效率不高,实际上非常慢。

任何人都可以帮助更有效地使用 CGAL 或类似的库来执行此操作。如果有任何可能,一个简单的教程示例将不胜感激。

非常感谢你,我很感激你的任何提示。

0 投票
1 回答
786 浏览

c++ - CGAL 不精确的直骨架

当我尝试使用 CGAL 绘制直骨架时,我得到了奇怪的结果(对称多边形上的非对称骨架)。

内核的结果:

  • Exact_predicates_inexact_constructions_kernel
  • Exact_predicates_exact_constructions_kernel

这里

使用内核

  • 笛卡尔

这里(这更好,但是当我循环移动多边形定义中的点时它会中断)。

我正在使用这段代码:

问题似乎是没有精确计算退化(4 条线在一点上相遇)。

我是否不恰当地使用内核?我应该如何使用它来获得这个结果:http: //i.imgur.com/3ggYocV.png

作为解决方法,我将多边形放大 100,然后调用 CGAL,然后再次缩小结果。


笔记:

显示结果的脚本(用于调试):https ://gist.github.com/anonymous/5497523

0 投票
2 回答
360 浏览

data-structures - 插入点后在 CGAL Delaunay 三角剖分中安全使用 Cell_handle

我打算编写一个使用 CGAL Delaunay 三角剖分数据结构的算法。基本上我需要在三角剖分中插入一些点,保存对一些单元格的引用,然后进行一些其他插入。

我想知道如何存储对在三角剖分中插入新点后未失效的单元格的引用?

在我看来, Cell_handle 只是一个指向内部结构的指针,因此由于内部容器的重新分配,存储它是危险的。另一方面,我看不出在 Triangulation_3 接口中无法存储来自 Cell_handle 的索引。

这段代码系统地崩溃了,但这对我来说真的很奇怪,如果我将 newP 更改为 10000,这段代码就会神奇地工作。

有人可以解释我如何处理这个问题吗?