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

reverse

Boost , Chapter 1. Geometry , Algorithms

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

Общая функция для обратной геометрии. Он напоминает std::обратная функциональность, но учитывает тип геометрии. Только для кольца или для струн это то же самое, что и для std::reverse.

Synopsis

template<typename Geometry>
void reverse(Geometry & geometry)

Parameters

Тип

Концепция

Имя

Описание

Геометрия и амп;

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

Геометрия

Модель указанного понятия, которая будет обращена вспять

Header

Либо

#include <boost/geometry.hpp>

Либо

#include <boost/geometry/algorithms/reverse.hpp>

Conformance

Обратная функция не определяется OGC.

Обратная функция соответствует std::reverse функции C++ std-библиотеки.

Behavior

Дело

поведение

Точка

Ничего не происходит, геометрия неизменна

Сегмент

Не поддерживается в этой версии

Коробка

Ничего не происходит, геометрия неизменна

Струна

Обратная линия

Кольцо

Обратное кольцо

Полигон

Обратная сторона внешнего кольца и всех внутренних колец в многоугольнике

Многоточечная

Ничего не происходит, геометрия неизменна

Многострунная

Обратно все содержащиеся строки по отдельности

Многополигон

Обратно все содержащиеся многоугольники по отдельности

[Note]Note

Обратная сторона (много) полигона или кольца может сделать действительную геометрию недействительной, потому что ориентация (против) по часовой стрелке изменяется.

Complexity

линейный

Example

Как перевернуть кольцо или полигон

#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
#include <boost/assign.hpp>
int main()
{
    using boost::assign::tuple_list_of;
    typedef boost::tuple<int, int> point;
    typedef boost::geometry::model::polygon<point> polygon;
    typedef boost::geometry::model::ring<point> ring;
    polygon poly;
    boost::geometry::exterior_ring(poly) = tuple_list_of(0, 0)(0, 9)(10, 10)(0, 0);
    boost::geometry::interior_rings(poly).push_back(tuple_list_of(1, 2)(4, 6)(2, 8)(1, 2));
    double area_before = boost::geometry::area(poly);
    boost::geometry::reverse(poly);
    double area_after = boost::geometry::area(poly);
    std::cout << boost::geometry::dsv(poly) << std::endl;
    std::cout << area_before << " -> " << area_after << std::endl;
    ring r = tuple_list_of(0, 0)(0, 9)(8, 8)(0, 0);
    area_before = boost::geometry::area(r);
    boost::geometry::reverse(r);
    area_after = boost::geometry::area(r);
    std::cout << boost::geometry::dsv(r) << std::endl;
    std::cout << area_before << " -> " << area_after << std::endl;
    return 0;
}

Результат:

(((0, 0), (10, 10), (0, 9), (0, 0)), ((1, 2), (2, 8), (4, 6), (1, 2)))
38 -> -38
((0, 0), (8, 8), (0, 9), (0, 0))
36 -> -36

PrevUpHomeNext

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




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



:: Главная :: Algorithms ::


реклама


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

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