gpt4 book ai didi

c++ - 几何舍入问题 : object no longer convex after simple transformations

转载 作者:行者123 更新时间:2023-11-30 01:48:21 26 4
gpt4 key购买 nike

我正在制作一个分析几何的小应用程序。在我的程序的一部分中,我使用了一种算法,该算法具有 将凸对象作为输入。幸运的是,我所有的对象最初都是凸的,但有些勉强如此(见图)。

在我应用一些转换后,我的算法无法工作(它产生“无限”长的多边形等),我认为这是因为图像中的舍入误差;由于舍入误差(在图像中非常夸张),圆柱体的顶部顶点被稍微“插入”并且不再凸出。

cylinder after and before transformation

所以我的问题是:有谁知道“稍微凸化”对象的方法吗?这是我尝试实现的一种方法,但它似乎不起作用(或者我实现错误):

1. Average all vertices together to create a vertex C inside the convex shape.
2. Let d[v] be the distance from C to vertex v.
3. Scale each vertex v from the center C with the scale factor 1 / (1+d[v] * CONVEXIFICATION_FACTOR)

谢谢!!我安装了 CGAL 和 Boost,因此我可以使用这些库函数中的任何一个(我已经这样做了)。

最佳答案

您当然可以通过计算 convex hull 使对象成为凸的它的。但这会“凸显”任何东西。如果您确定您的输入只是稍微偏离凸面,那么这应该不是问题。

CGAL 似乎有一个 3D Quickhull 的实现,这将是第一个尝试的事情。参见 http://doc.cgal.org/latest/Convex_hull_3/对于文档和一些示例程序。 (我对 CGAL 不够熟悉,无法重现任何示例并声称它们是正确的。)

关于c++ - 几何舍入问题 : object no longer convex after simple transformations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30531875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com