![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
comparable_distanceBoost , Chapter 1. Geometry , distance
|
Тип |
Концепция |
Имя |
Описание |
---|---|---|---|
Первый тип геометрии | Модель указанного понятия | ||
Геометрия2 const & | Геометрия2 | Модель указанного понятия |
Расчетное сопоставимое расстояние
Или
#include <boost/geometry.hpp>
Или
#include <boost/geometry/algorithms/comparable_distance.hpp>
Функция comparable_distance не определяется OGC.
Это зависит от системы координат точечного типа геометрии, если есть стратегия, которая может определить меру сопоставимого расстояния.
Точка [ORIG_END] --> | СегментСегментСегмент [ORIG_END] --> |
Коробка |
Струнный | КольцоКольцоКольцо [ORIG_END] --> | полигон [ORIG_END] --> | многоточечный [ORIG_END] --> | MultiLinestringMultiLinestringMultiLinestring [ORIG_END] --> | Многополигон [ORIG_END] --> |
Вариант | |
---|---|---|---|---|---|---|---|---|---|---|
Точка [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
СегментСегментСегмент [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Коробка | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Струнный | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
КольцоКольцоКольцо [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
полигон [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
многоточечный [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
MultiLinestringMultiLinestringMultiLinestring [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Многополигон [ORIG_END] --> | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Вариант | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Для точки геометрии: линейный
Для многоточечного кольца/полигона/многополигона: в настоящее время квадратичный
Для всех других комбинаций геометрии: линейная
Показывает, как эффективно добраться до ближайшей точки
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/numeric/conversion/bounds.hpp> #include <boost/foreach.hpp> int main() { typedef boost::geometry::model::d2::point_xy<double> point_type; point_type p(1.4, 2.6); std::vector<point_type> v; for (double x = 0.0; x <= 4.0; x++) { for (double y = 0.0; y <= 4.0; y++) { v.push_back(point_type(x, y)); } } point_type min_p; double min_d = boost::numeric::bounds<double>::highest(); BOOST_FOREACH(point_type const& pv, v) { double d = boost::geometry::comparable_distance(p, pv); if (d < min_d) { min_d = d; min_p = pv; } } std::cout << "Closest: " << boost::geometry::dsv(min_p) << std::endl << "At: " << boost::geometry::distance(p, min_p) << std::endl; return 0; }
Результат:
Closest: (1, 3) At: 0.565685
Статья comparable_distance раздела Chapter 1. Geometry distance может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |