2013-06-27 84 views
1

我有两个问题:boost :: polygon和boost/geometry/geometry/polygon的区别?

1)I ^刚才已经找到了提升1.53多边形实现(上http://www.boost.org/doc/libs/1_53_0/libs/polygon),并想对它进行测试,因为功能是惊人的CAD程序员喜欢我。 (但我没有得到与模板重新初始化的东西“http://www.boost.org/doc/libs/1_53_0/libs/polygon/doc/voronoi_basic_tutorial.htm”) 有没有人知道一个很好的教程,这解释了为什么这个模板重新初始化是必要的,以及如何做到这一点。或没有它如何相处。

2.)在寻找教程时,我发现很多使用#include“boost/geometry/geometries/polygon ...”的网站......“ 与#include”boost/polygon ...“ 或者boost是否使用相同事物(多边形)的两个实现? 或者它只是一个版本控制的东西?

感谢任何能够帮助我解决这个问题的人。 问候

回答

2

有Boost中两个库,介绍它自己的多边形概念:

我不是当然你在想什么“模板重新初始化”。也许你想说“模板专业化”,有时需要将某些类适应概念。

如果你想知道为什么这样做是这样做的。这允许调用在那些库中实现的传递一些遗留类的对象的算法。程序员必须适应这些类到一个必需的概念,他可以使用它们而不需要转换为一些中间对象。

这与在C++中使用特征的方式非常相似。例如。当实现一些新的迭代器类时,std::iterator_traits<>模板可能专门用于定义此迭代器的特征。这将是程序员为了使这个新的迭代器类适应Iterator概念之一而应该做的事情之一,例如, ForwardIterator概念。然后他可以在STL算法中使用它,例如std::for_each()。通过这些库引入

多边形概念这里描述:

典型地,库还提供了已经适应于支持的类概念。例如。 Boost.Geometry提供了boost::geometry::model::polygon<>http://www.boost.org/libs/geometry/doc/html/geometry/reference/models/model_polygon.html

也许有可能将某些类适用于两个概念并在两个库中使用它,但我不确定它。

+1

一个重要的区别是Boost.Polygon仅适用于整数坐标。 (甚至没有理性) – alfC

相关问题