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

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

Используется стратегия по умолчанию, соответствующая системе координат геометрий

Synopsis

template<typename Geometry1, typename Geometry2>
default_distance_result<Geometry1, Geometry2>::type distance(Geometry1 const & geometry1, Geometry2 const & geometry2)

Parameters

Тип

Концепция

Имя

Описание

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

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

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

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

Геометрия2

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

Returns

Расчетное расстояние

Header

Или

#include <boost/geometry.hpp>

Или

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

Conformance

Функциональное расстояние реализует функцию Расстояние отOGC Simple Feature Specification.

Supported geometries
Точка

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

[ORIG_END] -->

Коробка

Струнный

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

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

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

[ORIG_END] -->
МногопользовательскийMultiLinestringMultiLinestring

[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

МногопользовательскийMultiLinestringMultiLinestring

[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 <list>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/multi_point.hpp>
#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/foreach.hpp>
int main()
{
    typedef boost::geometry::model::d2::point_xy<double> point_type;
    typedef boost::geometry::model::polygon<point_type> polygon_type;
    typedef boost::geometry::model::linestring<point_type> linestring_type;
    typedef boost::geometry::model::multi_point<point_type> multi_point_type;
    point_type p(1,2);
    polygon_type poly;
    linestring_type line;
    multi_point_type mp;
    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);
    line.push_back(point_type(0,0));
    line.push_back(point_type(0,3));
    mp.push_back(point_type(0,0));
    mp.push_back(point_type(3,3));
    std::cout
        << "Point-Poly: " << boost::geometry::distance(p, poly) << std::endl
        << "Point-Line: " << boost::geometry::distance(p, line) << std::endl
        << "Point-MultiPoint: " << boost::geometry::distance(p, mp) << std::endl;
    return 0;
}

Результат:

Point-Poly: 1.22066
Point-Line: 1
Point-MultiPoint: 2.23607

PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:18:26/0.0072789192199707/0