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

comparable_distance

Boost , Chapter 1. Geometry , distance

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

Свободная функция comparable_distance не обязательно вычисляет расстояние, но вычисляет меру расстояния так, что два расстояния сопоставимы друг с другом. Например: для картезианской системы координат используется Пифагор, но квадратный корень не взят, что делает его быстрее и результаты двух точечных пар все же можно сравнить друг с другом.

Synopsis

template<typename Geometry1, typename Geometry2>
default_comparable_distance_result<Geometry1, Geometry2>::type comparable_distance(Geometry1 const & geometry1, Geometry2 const & geometry2)

Parameters

Тип

Концепция

Имя

Описание

Первый тип геометрии

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

Геометрия2 const &

Геометрия2

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

Returns

Расчетное сопоставимое расстояние

Header

Или

#include <boost/geometry.hpp>

Или

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

Conformance

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

Behaviour

Это зависит от системы координат точечного типа геометрии, если есть стратегия, которая может определить меру сопоставимого расстояния.

Supported geometries
Точка

[ORIG_END] -->
СегментСегментСегмент

[ORIG_END] -->

Коробка

Струнный

КольцоКольцоКольцо

[ORIG_END] -->
полигон

[ORIG_END] -->
многоточечный

[ORIG_END] -->
MultiLinestringMultiLinestringMultiLinestring

[ORIG_END] -->
Многополигон

[ORIG_END] -->

Вариант

Точка

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

СегментСегментСегмент

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Коробка

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Струнный

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

КольцоКольцоКольцо

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

полигон

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

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

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

MultiLinestringMultiLinestringMultiLinestring

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

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

[ORIG_END] -->
ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Вариант

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Complexity

Для точки геометрии: линейный

Для многоточечного кольца/полигона/многополигона: в настоящее время квадратичный

Для всех других комбинаций геометрии: линейная

Example

Показывает, как эффективно добраться до ближайшей точки

#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

PrevUpHomeNext

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




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



:: Главная :: distance ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:29:27/0.0045430660247803/0