![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
is_valid (with message)Boost , Chapter 1. Geometry , is_valid
|
Тип |
Концепция |
Имя |
Описание |
---|---|---|---|
Geometry const & | Любой тип, выполняющий концепцию геометрии |
geometry | Модель указанного понятия |
std::string & | Послание | Струна, содержащая сообщение о том, является ли геометрия действительной или нет, и если она не является действительной, то почему |
Возвращается истинно, если геометрия действительна (в смысле ОГК); кроме того, считаются действительными следующие геометрии: многогеометрии без элементов, линейные геометрии, содержащие шипы, ареальные геометрии с дублирующими (последовательными) точками
Либо
#include <boost/geometry.hpp>
Либо
#include <boost/geometry/algorithms/is_valid.hpp>
Функция is_valid не определяется OGC.
Геометрия |
статус |
---|---|
Точка | |
Сегмент | |
Box | |
Линия | |
Кольцо | |
Полигон | |
Многоточечный | |
Мультилинестринг | |
Мультиполигон | |
Variant |
Постоянное время для точек, сегментов, коробок и многоточечных
Линейный для линейных шнуров и многолинейных шнуров
Линеаритмический для колец
В настоящее время худший случай квадратичен для многоугольников и многополигонов.
Проверяет, действительна ли геометрия, и, если не действительна, печатает сообщение, описывающее причину.
#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 (with message) раздела Chapter 1. Geometry is_valid может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |