c – Boost Polygon的用途是什么?
这是一个关于Boost Polygon的问题(不是关于Boost Geometry)
最近我试图玩几何几何结构.自从Boost Geometry(一个不同的图书馆也处理多边形)在Boost 1.58中没有任何工作,尽管我会尝试到Boost Polygon. 尝试了解库并没有得到预期的结果后,我发现该库仅适用于整数坐标.起初我虽然这是对输入的限制,但实际上所有的内部操作和输出都是整数,这使得所有的输出都很古怪,例如,多边形的交点稍微变形(因为顶点的坐标必须是整数). 主页的引用(强调我的):
起初我虽然在精确和不精确的表示之间是一个问题,但是我试图让它使用理性(Boost Rational)类型(我想出了一个包装器理性类来编译它),但实际上整数坐标是一个严格的要求(代码中有一些实际添加和减除一个构造中间结果的部分). 回到整数,我不得不使坐标很大(整数),使这个离散问题消失.换句话说,我必须对所有的东西进行归一化.那最后,最初我觉得不是很有用或方便. 我缺少使用这个图书馆的重要事项吗? 这个图书馆是为了“像素化”的问题吗?如果坐标被限制为整数,那么实用程序是什么? 将坐标缩放到非常大的数字,然后再重新归一化几何应用的结果? 我知道使用浮点数的计算几何是非常痛苦的,但是为什么这个库甚至不能与确切的理性兼容? 有真正的使用例子吗? (这个手册很不错,给出例子)有人真的使用这个库吗? 奖金问题:这是一个被遗弃的图书馆吗? 这是一个例子,说明库的整数坐标如何运行: 这里是一个整数多边形会发生什么的例子,如果我使用小数字来表示坐标,结果甚至不是几何一致的. (两个多边形是多边形(-2,0)(2,-2)(6,4)(0,2)和多边形(-5,0)( – 1,-2)(3,4)( – 3,2)) (注意一切如何变化.) 但是当我将多边形缩放到大的整数坐标时,结果会更准确(两个多边形是多边形(-200,0)(200,-200)(600,400)(0,200)和多边形(-500,0)( – 100,-200)(300,400)( – 300,200),上述两个缩放版本.): 编辑:我学到了更多的计算几何,显然计算几何的鲁棒性是一个非常困难的问题.其中一个策略是使用整数算术.看起来Boost.Polygon采用这种方法.连续空间中的问题应适当缩小. 解决方法
没有放弃
是的,(许多)人使用. 有一件事似乎有一个坚实的用户群是例如Voronoi图和相关算法.你也可以在这里找到很多有关这方面的问题,所以你可以去看看他们使用什么. 奖金回答 甚至可以通过使用组合库 #include <boost/geometry/geometries/adapted/boost_polygon.hpp> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |