问题标签 [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 回答
1350 浏览

c++ - CGAL 新手问题:哪些部分相交?

我有一组线段(每个线段定义有两个点;2D),并且想知道每个线段 x,还有多少其他线段 y1,...,yn 与 x 相交。您将如何在 CGAL 中有效地做到这一点?

我对 CGAL 库和计算机几何完全没有任何经验。我只需要一个算法来做上面提到的事情。因此,我认为,与其实现自定义功能,不如使用这个库更好/更有效。

CGAL 示例 sweep_line.cpp 向我展示了如何获取一组 o 段的所有交点。因为我对点不感兴趣,所以我必须检查点和段以获取每个段的交叉点数。但我不知道如何在 CGAL 中做到这一点。而且我还假设有一种更有效的方法。含义:避免计算点并迭代所有线段,并重新检查该线段是否与任何找到的点相交。

有小费吗?感谢您的输入!

萨沙

PS:另一个快速的新手问题:为什么以下结果打印出来带有负号?

找到 3 个交点:-21/-7 -21/-7 -3/-1 -5/-1 -35/-7 -35/-7

PS2:我认识到我的标题和我的第一行并没有描述同样的问题。我不需要知道哪些段与 x 相交,而只需要知道段的数量,如文中所述。

0 投票
1 回答
849 浏览

swig - CGAL 链接器错误 - 未找到符号:___gmpq_clear

我正在尝试将 CGAL 合并到现有的模拟项目中,但是遇到了一些链接器问题。python 模拟 keiro.py 在 swig 包装器中使用了一个名为physics.cpp 的文件来加速常见操作......我设法让我的physics.cpp 文件进行编译,但是运行Python 模拟错误并显示以下消息:

回溯(最后一次调用):文件“keiro.py”,第 2 行,从世界导入 World,查看文件“/Users/marcstrauss/Desktop/keiro/world.py”,第 9 行,从 fast.physics 导入Vec2d, Particle, World as PhysicsWorld 文件“/Users/marcstrauss/Desktop/keiro/fast/physics.py”,第 7 行,在 import _physics ImportError: dlopen(/Users/marcstrauss/Desktop/keiro/fast/physics.so , 2):符号未>找到:_ _gmpq_clear 引用自:/Users/marcstrauss/Desktop/keiro/fast/_physics.so 预期于:/Users/marcstrauss/Desktop/keiro/fast/_physics.so 中的平面命名空间

我认为目标文件中未识别 ___gmpq_clear 符号的错误意味着我没有正确链接到 CGAL。这是我的生成文件:

全部:physics.py _physics.so graphutils.py _graphutils.so

_physics.so:setup_physics.pyphysics_wrap.cxxphysics.cpp python setup_physics.py build_ext --inplace -I/opt/local/include/

_graphutils.so: setup_graphutils.py graphutils_wrap.cxx graphutils.cpp python setup_graphutils.py build_ext --inplace -I/opt/local/include/

physics.pyphysics_wrap.cxx:physics.iphysics.h swig -python -c++physics.i

graphutils.py graphutils_wrap.cxx: graphutils.i graphutils.h swig -python -c++ graphutils.i -I/opt/local/include/ clean: rm -f Physics.py rm -f graphutils.py rm -f *.cxx rm -f *~ *.pyc *.pyo rm -f *.so rm -rf build

有没有人对我有任何关于如何解决这个问题的想法?谢谢!

0 投票
1 回答
1131 浏览

c++ - 将 Vertex_handles 获取到 delaunay 三角剖分的点

我想遍历 a 的所有顶点CGAL::Delaunay_triangulation_2,但找不到有关获取所有顶点句柄的文档。

我为此找到的文档解释了如何迭代三角测量。

但是,我找不到有关如何从迭代器获取 Vertex_handle 的文档

0 投票
1 回答
1567 浏览

python - _swig_getattr 属性错误

我使用 swig 包装 ac 函数以在 python 代码中使用时遇到属性错误。我在 chap 旁边还有其他功能可以正常工作,但是有些奇怪的原因这个不起作用:/

我正在尝试使用 CGAL 来确定所有粒子的凸包(第一章)。下面是 chap 函数和回溯:

0 投票
2 回答
1292 浏览

iphone - iOS的CGAL替代品

我有一组定义街道的节点。每个节点都有纬度和经度。我也有纬度和经度的用户位置。我的目的是为每对节点定义的段构建 Voronoi 图,然后找到最接近哪个节点的用户位置。

看起来这个任务可以用 CGAL 库来完成。虽然我正在为 iOS 环境编译它,但也许你们将能够提供已经针对 iOS 编译的库的链接,或者从一开始就打算在 Objective C 环境中使用......

因为我担心即使CGAL为我编译,我在使用时可能会遇到麻烦。谢谢!

PS也可能你有一个更好的解决方案。随意拼写我们在这里。

0 投票
4 回答
2535 浏览

c++ - 如何从 CGAL 中的 Edge_iterator 获取源点和目标点

我对某些点进行了 Delaunay 三角剖分,并希望按长度升序遍历其中的所有边,以构建最小跨度线程。

我尝试了以下方法,但无法编译:

在 中编译失败sortFunction,说source是没有成员Edge_iterator。但是,文档在这里让我感到困惑。

CGAL 文档说边迭代器的值类型是半边。 据说我可以使用source()访问target()积分。

然而,情况似乎并非如此。我在这里搞砸了什么?

0 投票
1 回答
2826 浏览

c++ - 从 edge_iterator 获取 vertex_handle

我在为 Delaunay 三角剖分中的每个边的端点获取 vertex_handle 时遇到了相当大的困难。由于我为此苦苦思考了几个小时,我想也许你们中的一个人可以帮助我解决这个看似微不足道的问题:

根据取消引用 Edge_iterator 的文档,我应该得到一个 Edge_handle 和 Edge_handle 应该有成员 source() 和 target() 来简单地获取端点,但它不会编译并且似乎是错误的。像上面这样的取消引用会给我一个没有这些成员函数的 pair<>。

知道我做错了什么吗?

0 投票
2 回答
3672 浏览

c++ - 使用 CGAL 进行主成分分析的点云对齐

我在 3D 对象的表面上有一组随机采样点。我希望能够计算两个不同对象之间的相似性。为了完成这项工作,我首先必须确保我要比较的两个对象的样本点确实具有相同的旋转和比例。我想我可以通过沿 x/y/z 轴定向主分量轴并缩放以使最长的主分量确实具有单位长度来做到这一点。

我首先计算点集的质心,然后平移所有点,使原点成为新的质心。

我使用 CGAL linear_least_squares_fitting_3 函数进行主成分分析,它给出了通过点的最佳拟合平面。我通过取两个基向量的叉积来计算这个平面的法线:

dir2vec函数将CGAL::Direction_3对象转换为等效osg::Vec3d对象(我使用的是 OpenSceneGraph 图形引擎)。最后,我使用以下代码将所有内容旋转到单位轴:

这里,osgPoints是一个vector<osg::Vec3d>. 出于测试目的,我将旋转点的质心平移回原始位置,因此两个点云不会重叠。

为了测试它,我使用了相同点集的两个副本,但是一个被转换(旋转和平移)。上面的代码应该撤消旋转,但是结果不是我所期望的:见这张图片。红线表示最佳拟合平面的基向量及其法线。看起来这两个调用的结果linear_least_squares_fitting_3给出的答案略有不同,因为其中一个平面相对于另一个平面旋转了一点。

这是另一个图像,其中两个对象的质心都位于原点。现在可以清楚地看到法线和基本向量一起下降,但点没有。

有谁知道为什么会发生这种情况,以及如何防止它?

0 投票
1 回答
204 浏览

cmake - 如何在启用跟踪的情况下构建 CGAL (esp CGAL_NEF_TRACEN)

我正在尝试调试使用 CGAL 库获得的断言失败异常。CGAL 在整个库中都有很好的调试和跟踪语句,我可以用它们来了解我的情况发生了什么。然而,尽管付出了很多努力,我还是找不到正确的编译时间标志来启用这些调试和跟踪消息。我对使用CGAL_NEF_TRACEN宏打印的跟踪消息特别感兴趣。我曾尝试使用 cmake 选项进行编译-DCMAKE_BUILD_TYPE=Debug,但无济于事。我对cmake没有太多经验。如果您知道如何执行此操作,请告诉我。

0 投票
1 回答
3877 浏览

computational-geometry - CGAL:线段和多边形之间的交点?

我有一组多边形,我想测试它和一个段之间的交集。我查看了手册,但找不到匹配的功能。点、线、线段、三角形、平面之间的交点确实存在。多边形之间的交集也在那里。我的问题是:

  1. 有这样的功能吗?
  2. 如果不是,这是否意味着我需要将多边形分解为段并在这些段之间进行交叉?(我不愿意这样做的原因是,我认为CGAL实际上可能会使用这种方式来做多边形之间的交集。为什么没有这样一个用于相交线和多边形的函数?)或者有没有其他更好的怎么做?