Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

buffer (with strategies)

Boost , Chapter 1. Geometry , buffer

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Вычисляет буфер геометрии.

Description

Буфер свободной функции вычисляет буфер (полигон представляет собой набор пространственных точек в пределах заданного максимального расстояния от геометрии) геометрии.

Synopsis

template<typename GeometryIn, typename MultiPolygon, typename DistanceStrategy, typename SideStrategy,
         typename JoinStrategy, typename EndStrategy, typename PointStrategy>
void buffer(GeometryIn const & geometry_in, MultiPolygon & geometry_out, DistanceStrategy const & distance_strategy,
            SideStrategy const & side_strategy, JoinStrategy const & join_strategy, EndStrategy const & end_strategy,
            PointStrategy const & point_strategy)

Parameters

Тип

Концепция

Имя

Описание

Геометрия В консте и

Любой тип, выполняющий концепцию геометрии

геометрия_in

Модель указанной концепции

Тип, отвечающий концепции MultiPolygon

геометрия_выход

многоугольник вывода (или стд:: коллекция многоугольников) будет содержать буферизованную версию входной геометрии

Стратегия, определяющая расстояние (или радиус)

distance_strategy

Стратегия расстояния для использования

SideStrategy const &

Стратегия, определяющая создание по сторонам

JoinStrategy const &

Стратегия, определяющая создание вокруг затворных углов

join_strategy

Стратегия присоединения для использования

end_strategy

Стратегия конечного использования

PointStrategy const &

Стратегия, определяющая создание вокруг точек

point_strategy

Точечная стратегия для использования

Header

Или

#include <boost/геометрия.hpp>

Или

#include <boost/геометрия/алгоритмы/буфер.hpp>

Strategies

5 стратегий дают пользовательский контроль созданному буферу

  • закругленные или острые углы
  • линии могут быть округлены или плоские
  • расстояние может быть симметричным или ассиметричным, а также положительным или отрицательным
  • вокруг точек форма может быть круглой или квадратной
  • стороны можно контролировать (в настоящее время существует только один вариант)

Указывая отрицательное расстояние для расстояния, для (много) полигонного корпуса, многоугольник будет меньше (также известный как дефлат). Расстояние не может быть 0.

Следующая цифра показывает, где в сгенерированном буфере стратегии имеют эффект

buffer_strategies

Conformance

Функционный буфер реализует функцию Buffer от OGC Simple Feature Specification.

Он конформируется, если используется со следующей комбинацией стратегий: join_round, end_round, distance_sym, point_circle, side_straight

Supported geometries

2D Cartesian

Точка

ok

Сегмент

nyi

Box

nyi

Линии

ok

Кольцо

ok

ok

MultiPoint

ok

MultiLinestring

ok

MultiPolygon

ok

Examples

Показывает, как буферный алгоритм может быть использован для создания буфера решетки, многоточечный многоугольник

#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;
}

The linestring case

buffer_linestring

The multi_point case

buffer_multi_point

The multi_polygon case

buffer_multi_polygon

Available Strategies

PrevUpHomeNext

Статья buffer (with strategies) раздела Chapter 1. Geometry buffer может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: buffer ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:11:50/0.010363817214966/1