提升几何点初始化

Boost geometry point initialization

本文关键字:初始化 何点      更新时间:2023-10-16

我正在尝试熟悉boost::geometry::point。在我的类中,我有一个没有参数的默认构造函数,在这种情况下我想用零初始化所有点值。

由于 set/get 函数是模板,因此以下代码部分将在编译时产生错误:

    for( std::size_t i = 0; i < pnt.size() ; i++ )
    {
        pnt.set<i>( 0.0 );
    }

要参考文档 http://www.boost.org/doc/libs/1_51_0/libs/geometry/doc/html/geometry/reference/models/model_point.html

我需要设置一些值,因为:

坐标未初始化。如果未调用带参数的构造函数,并且未使用 set 或 assign 分配点,则坐标值将包含垃圾。

有没有办法在编译时用零初始化所有值?如果不是,那么在运行时?

您可以使用

assign_zeroassign_values(这个仅适用于 2、3 和 4 个组件):

boost::geometry::assign_zero(pnt);
boost::geometry::assign_values(pnt, 0.0, 0.0);

如果您使用的是自定义点类,则需要使用其中一个BOOST_GEOMETRY_REGISTER_POINT...进行注册,以便能够使用增强几何功能。您可以在此处找到几个示例。