Ускорение инициализации точки геометрии

Я пытаюсь познакомиться с 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, тогда значения координат будут содержать мусор.

Есть ли способ инициализировать все значения с нуля во время компиляции? Если нет, то во время выполнения?

1

Решение

Ты можешь использовать assign_zero или же assign_values (этот работает только для 2, 3 и 4 компонентов):

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

Если вы используете пользовательский класс точек, вам нужно зарегистрировать его, используя один из BOOST_GEOMETRY_REGISTER_POINT... для того, чтобы иметь возможность использовать функциональность Boost Geometry. Вы можете найти несколько примеров Вот.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]