2013-12-04 3 views
0

Я пытаюсь использовать boost :: geometry :: model: polygon, и я просто не могу заставить его работать, я также обнаружил там что-то еще:Невозможно использовать boost :: geometry :: model :: polygon

#include <boost/geometry/geometry.hpp> 

называется polygon_2d

я не знаю, какой из них мне нужно и как использовать его.

я попытался написать следующий код:

double points[][2] = {{2.0, 1.3}, {4.1, 3.0}, {5.3, 2.6}, {2.9, 0.7}, {2.0, 1.3}}; 
model::polygon<model::d2::point_xy<double> > poly; 
append(poly, points); 

Но к сожалению он не работает, я получил следующее сообщение об ошибке компиляции:

boost::mpl::assertion:_failed : cannot convert parameter 1 from 'boost::mpl::failed**** (_cdecl boost::geometry::traits::point_type<Geometry>::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE 

моя конечная цель заключается в создании полигона и чтобы проверить, если точки находятся внутри него ..

заранее спасибо

EDIT: Ожидаемая функция добавления (Geometry& geometry, RangeOrPoint const& range_or_point);

ответ

1

двойные точки [] [2] не являются диапазоном очков. Вместо этого вы можете использовать std::vector<model::d2::point_xy<double> >.

См. Пример: http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/algorithms/append.html Здесь boost::tuple<> используется как точка. Обратите внимание на использование макроса BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS для адаптации tuple<> к концепции Point.

Используя эти функции, вы можете получить доступ к кольцу многоугольника

http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html

http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html

Смежные вопросы