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

is_valid (with message)

Boost , Chapter 1. Geometry , is_valid

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

Проверяет, действительна ли геометрия (в смысле ОГК)

Synopsis

template<typename Geometry>
bool is_valid(Geometry const & geometry, std::string & message)

Parameters

Тип

Концепция

Имя

Описание

Geometry const &

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

geometry

Модель указанного понятия

std::string &

Послание

Струна, содержащая сообщение о том, является ли геометрия действительной или нет, и если она не является действительной, то почему

Returns

Возвращается истинно, если геометрия действительна (в смысле ОГК); кроме того, считаются действительными следующие геометрии: многогеометрии без элементов, линейные геометрии, содержащие шипы, ареальные геометрии с дублирующими (последовательными) точками

Header

Либо

#include <boost/geometry.hpp>

Либо

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

Conformance

Функция is_valid не определяется OGC.

Supported geometries

Геометрия

статус

Точка

ok

Сегмент

ok

Box

ok

Линия

ok

Кольцо

ok

Полигон

ok

Многоточечный

ok

Мультилинестринг

ok

Мультиполигон

ok

Variant

ok

Complexity

Постоянное время для точек, сегментов, коробок и многоточечных

Линейный для линейных шнуров и многолинейных шнуров

Линеаритмический для колец

В настоящее время худший случай квадратичен для многоугольников и многополигонов.

Example

Проверяет, действительна ли геометрия, и, если не действительна, печатает сообщение, описывающее причину.

#include <iostream>
#include <string>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
int main()
{
    typedef boost::geometry::model::d2::point_xy<double> point_type;
    typedef boost::geometry::model::polygon<point_type> polygon_type;
    polygon_type poly;
    boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))", poly);
    std::string message;
    bool valid = boost::geometry::is_valid(poly, message);
    std::cout << "is valid? " << (valid ? "yes" : "no") << std::endl;
    if (! valid)
    {
        std::cout << "why not valid? " << message << std::endl;
    }
    return 0;
}

Результат:

is valid? no
why not valid? Geometry has disconnected interior
is_valid_example
See also

PrevUpHomeNext

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




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



:: Главная :: is_valid ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 00:44:44/0.012115001678467/0