![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
withinBoost , Chapter 1. Geometry , within
|
Тип |
Концепция |
Имя |
Описание |
---|---|---|---|
Геометрия1 const & | Любой тип, выполняющий концепцию геометрии | Геометрия1 | Модель указанного понятия, которая может находиться в пределах второй геометрии |
Геометрия2 const & | Любой тип, выполняющий концепцию геометрии | Геометрия2 | Модель указанного понятия, которая может содержать первую геометрию |
истинно, если геометрия1 полностью содержится в геометрии2, то ложно
Либо
#include <boost/geometry.hpp>
Либо
#include <boost/geometry/algorithms/within.hpp>
Функция внутри реализует функцию внутри изOGC Simple Feature Specification.
![]() | Note |
---|---|
ОГК определяет внутри как полностью внутри, а не на границе. См. примечания для внутри / на границе |
Точка<-- [ORIG_BEGIN] ТочкаPoint [ORIG_END] --> | Сегмент[ORIG_BEGIN]Сегмент [ORIG_END] --> |
Коробка |
Струнный | КольцоКольцо [ORIG_END] --> | [[ORIG_BEGIN]] ПолигонПолигон [ORIG_END] --> | MultiPointMultiPoint [ORIG_END] --> | MultiLinestringMultiLinestring [ORIG_END] --> | МультиполигонMultiPolygon [ORIG_END] --> |
Вариант | |
---|---|---|---|---|---|---|---|---|---|---|
Точка<-- [ORIG_BEGIN] ТочкаPoint [ORIG_END] --> | ||||||||||
Сегмент[ORIG_BEGIN]Сегмент [ORIG_END] --> | ||||||||||
Коробка | ||||||||||
Струнный | ||||||||||
КольцоКольцо [ORIG_END] --> | ||||||||||
[[ORIG_BEGIN]] ПолигонПолигон [ORIG_END] --> | ||||||||||
MultiPointMultiPoint [ORIG_END] --> | ||||||||||
MultiLinestringMultiLinestring [ORIG_END] --> | ||||||||||
МультиполигонMultiPolygon [ORIG_END] --> | ||||||||||
Вариант |
![]() | Note |
---|---|
В этой матрице статуса выше: столбцы являются типами первого параметра, а строки - типами второго параметра. Таким образом, точка может быть проверена на полигоне, но не наоборот. |
Если точка расположена точно на границе геометрии, то результат зависит от стратегии. Стратегия по умолчанию (Виндинг (координатная система агностика)) в этом случае возвращается ложной.
Если многоугольник имеет обратную ориентацию (например, против часовой стрелки для многоугольника по часовой стрелке), результат также зависит от стратегии. Стратегия по умолчанию возвращается по-прежнему верной, если точка полностью находится в пределах обратного многоугольника. Существует определенная стратегия, которая в данном случае является ложной.
линейный
Показывает, как определить, находится ли точка внутри полигона или нет.
#include <iostream> #include <list> #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((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)" "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly); point_type p(4, 1); std::cout << "within: " << (boost::geometry::within(p, poly) ? "yes" : "no") << std::endl; return 0; }
Результат:
within: yes![]()
Статья within раздела Chapter 1. Geometry within может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |