![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
buffer (with strategies)Boost , Chapter 1. Geometry , buffer
|
Тип |
Концепция |
Имя |
Описание |
---|---|---|---|
Геометрия В консте и | Любой тип, выполняющий концепцию геометрии | геометрия_in | Модель указанной концепции |
Тип, отвечающий концепции MultiPolygon | геометрия_выход | многоугольник вывода (или стд:: коллекция многоугольников) будет содержать буферизованную версию входной геометрии | |
Стратегия, определяющая расстояние (или радиус) | distance_strategy | Стратегия расстояния для использования | |
SideStrategy const & | Стратегия, определяющая создание по сторонам | ||
JoinStrategy const & | Стратегия, определяющая создание вокруг затворных углов | join_strategy | Стратегия присоединения для использования |
end_strategy | Стратегия конечного использования | ||
PointStrategy const & | Стратегия, определяющая создание вокруг точек | point_strategy | Точечная стратегия для использования |
Или
#include <boost/геометрия.hpp>
Или
#include <boost/геометрия/алгоритмы/буфер.hpp>
5 стратегий дают пользовательский контроль созданному буферу
Указывая отрицательное расстояние для расстояния, для (много) полигонного корпуса, многоугольник будет меньше (также известный как дефлат). Расстояние не может быть 0.
Следующая цифра показывает, где в сгенерированном буфере стратегии имеют эффект
Функционный буфер реализует функцию Buffer от OGC Simple Feature Specification.
Он конформируется, если используется со следующей комбинацией стратегий: join_round, end_round, distance_sym, point_circle, side_straight
2D Cartesian | |
---|---|
Точка | |
Сегмент | |
Box | |
Линии | |
Кольцо | |
| |
MultiPoint | |
MultiLinestring | |
MultiPolygon | |
Показывает, как буферный алгоритм может быть использован для создания буфера решетки, многоточечный многоугольник
#include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/geometries.hpp> int main() { typedef double coordinate_type; typedef boost::geometry::model::d2::point_xy<coordinate_type> point; typedef boost::geometry::model::polygon<point> polygon; // Declare strategies const double buffer_distance = 1.0; const int points_per_circle = 36; boost::geometry::strategy::buffer::distance_symmetric<coordinate_type> distance_strategy(buffer_distance); boost::geometry::strategy::buffer::join_round join_strategy(points_per_circle); boost::geometry::strategy::buffer::end_round end_strategy(points_per_circle); boost::geometry::strategy::buffer::point_circle circle_strategy(points_per_circle); boost::geometry::strategy::buffer::side_straight side_strategy; // Declare output boost::geometry::model::multi_polygon<polygon> result; // Declare/fill a linestring boost::geometry::model::linestring<point> ls; boost::geometry::read_wkt("LINESTRING(0 0,4 5,7 4,10 6)", ls); // Create the buffer of a linestring boost::geometry::buffer(ls, result, distance_strategy, side_strategy, join_strategy, end_strategy, circle_strategy); // Declare/fill a multi point boost::geometry::model::multi_point<point> mp; boost::geometry::read_wkt("MULTIPOINT((3 3),(4 4),(6 2))", mp); // Create the buffer of a multi point boost::geometry::buffer(mp, result, distance_strategy, side_strategy, join_strategy, end_strategy, circle_strategy); // Declare/fill a multi_polygon boost::geometry::model::multi_polygon<polygon> mpol; boost::geometry::read_wkt("MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))", mpol); // Create the buffer of a multi polygon boost::geometry::buffer(mpol, result, distance_strategy, side_strategy, join_strategy, end_strategy, circle_strategy); return 0; }
Статья buffer (with strategies) раздела Chapter 1. Geometry buffer может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |