![]() |
![]() ![]() ![]() ![]() |
![]() |
convertBoost , Chapter 1. Geometry , Algorithms
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Тип |
Концепция |
Имя |
Описание |
|---|---|---|---|
Геометрия1 const & | Любой тип, выполняющий концепцию геометрии | Геометрия1 | Модель указанного понятия (источник) |
Геометрия2 & | Любой тип, выполняющий концепцию геометрии | Геометрия2 | Модель указанного понятия (цели) |
Либо
#include <boost/geometry.hpp>
Либо
#include <boost/geometry/algorithms/convert.hpp>
Преобразование функций не определяется OGC.
Точка<-- [ORIG_BEGIN] ТочкаPoint [ORIG_END] --> |
сегмент | КоробкаBox [ORIG_END] --> |
Струнный |
Кольцо |
полигон |
многоточечный | MultiLinestringMultiLinestring [ORIG_END] --> |
Многополигон | |
|---|---|---|---|---|---|---|---|---|---|
Точка<-- [ORIG_BEGIN] ТочкаPoint [ORIG_END] --> |
|
|
|
|
|
|
|
|
|
|
сегмент |
|
|
|
|
|
|
|
|
|
КоробкаBox [ORIG_END] --> |
|
|
|
|
|
|
|
|
|
|
Струнный |
|
|
|
|
|
|
|
|
|
|
Кольцо |
|
|
|
|
|
|
|
|
|
|
полигон |
|
|
|
|
|
|
|
|
|
|
многоточечный |
|
|
|
|
|
|
|
|
|
MultiLinestringMultiLinestring [ORIG_END] --> |
|
|
|
|
|
|
|
|
|
|
Многополигон |
|
|
|
|
|
|
|
|
|
![]() | Note |
|---|---|
В этой матрице статуса выше: столбцы являются типами источников, а строки - типами целей. Таким образом, коробка может быть преобразована в кольцо, многоугольник или многополигон, но не наоборот. |
линейный
Как преобразовать геометрию в другую геометрию
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/box.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/adapted/boost_tuple.hpp> BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian) int main() { typedef boost::geometry::model::d2::point_xy<double> point; typedef boost::geometry::model::box<point> box; typedef boost::geometry::model::polygon<point> polygon; point p1(1, 1); box bx = boost::geometry::make<box>(1, 1, 2, 2); // Assign a box to a polygon (conversion box->poly) polygon poly; boost::geometry::convert(bx, poly); // Convert a point to another point type (conversion of point-type) boost::tuple<double, double> p2; boost::geometry::convert(p1, p2); // source -> target using boost::geometry::dsv; std::cout << "box: " << dsv(bx) << std::endl << "polygon: " << dsv(poly) << std::endl << "point: " << dsv(p1) << std::endl << "point tuples: " << dsv(p2) << std::endl ; return 0; }
Результат:
box: ((1, 1), (2, 2)) polygon: (((1, 1), (1, 2), (2, 2), (2, 1), (1, 1))) point: (1, 1) point tuples: (1, 1)
![]() | Note |
|---|---|
Преобразование моделируется как источник ->цель (где назначение моделируется как цель :=источник) |
Статья convert раздела Chapter 1. Geometry Algorithms может быть полезна для разработчиков на c++ и boost.
:: Главная :: Algorithms ::
реклама |