\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - dD Spatial Searching

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Weighted_Minkowski_distance< Traits > Class Template Reference
Distance Classes

`#include <CGAL/Weighted_Minkowski_distance.h>`

## Definition

The class `Weighted_Minkowski_distance` provides an implementation of the concept `OrthogonalDistance`, with a weighted Minkowski metric on \( d\)-dimensional points defined by \( l_p(w)(r,q)= ({\Sigma_{i=1}^{i=d} \, w_i(r_i-q_i)^p})^{1/p}\) for \( 0 < p <\infty\) and defined by \( l_{\infty}(w)(r,q)=max \{w_i |r_i-q_i| \mid 1 \leq i \leq d\}\).

For the purpose of the distance computations it is more efficient to compute the transformed distance \( {\sigma_{i=1}^{i=d} \, w_i(r_i-q_i)^p}\) instead of the actual distance.

Template Parameters

  Traits | must be a model of the concept `SearchTraits`, for example `Search_traits_2`.

Is Model Of:
  `OrthogonalDistance`

See Also
  `OrthogonalDistance`
  `CGAL::Euclidean_distance<Traits>`

Examples:
  Spatial_searching/weighted_Minkowski_distance.cpp.

## Types
typedef Traits::Dimension | D
| Dimension tag.
typedef Traits::FT | FT
| Number type.
typedef Traits::Point_d | Point_d
| Point type.

## Creation
| Weighted_Minkowski_distance (int d, Traits t=Traits())
| Constructor implementing \( l_2\) metric for \( d\)-dimensional points.
template<class InputIterator >
| Weighted_Minkowski_distance (FT power, int dim, InputIterator wb, InputIterator we, Traits t=Traits())
| Constructor implementing the \( l_{power}(weights)\) metric. More...

## Operations
FT | transformed_distance (Point_d q, Point_d r) const
| Returns \( d^{power}\), where \( d\) denotes the distance between `q` and `r`.
FT | min_distance_to_rectangle (Point_d q, Kd_tree_rectangle< FT, D > r) const
| Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` closest to `q`.
FT | min_distance_to_rectangle (Point_d q, Kd_tree_rectangle< FT, D > r, vector< FT > &dists)
| Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` closest to `q`. More...
FT | max_distance_to_rectangle (Point_d q, Kd_tree_rectangle< FT, D > r) const
| Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` farthest to `q`.
FT | max_distance_to_rectangle (Point_d q, Kd_tree_rectangle< FT, D > r, vector< FT > &dists)
| Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` farthest to `q`. More...
FT | new_distance (FT dist, FT old_off, FT new_off, int cutting_dimension) const
| Updates `dist` incrementally and returns the updated distance.
FT | transformed_distance (FT d) const
| Returns \( d^p\) for \( 0 < p <\infty\) . More...
FT | inverse_of_transformed_distance (FT d) const
| Returns \( d^{1/p}\) for \( 0 < p <\infty\). More...

## Constructor & Destructor Documentation

template<typename Traits >
template<class InputIterator >

CGAL::Weighted_Minkowski_distance< Traits >::Weighted_Minkowski_distance | ( | FT | power,
|  | int | dim,
|  | InputIterator | wb,
|  | InputIterator | we,
|  | Traits | t = `Traits()`
| ) |  |

Constructor implementing the \( l_{power}(weights)\) metric.

\( power \leq0\) denotes the \( l_{\infty}(weights)\) metric. The values in the iterator range `[wb,we)` are the weight.

## Member Function Documentation

template<typename Traits >

FT CGAL::Weighted_Minkowski_distance< Traits >::inverse_of_transformed_distance | ( | FT | d) |  | const

Returns \( d^{1/p}\) for \( 0 < p <\infty\).

Returns \( d\) for \( p=\infty\).

template<typename Traits >

FT CGAL::Weighted_Minkowski_distance< Traits >::max_distance_to_rectangle | ( | Point_d | q,
|  | Kd_tree_rectangle< FT, D > | r,
|  | vector< FT > & | dists
| ) |  |

Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` farthest to `q`.

Stores the distances in each dimension in `dists`.

template<typename Traits >

FT CGAL::Weighted_Minkowski_distance< Traits >::min_distance_to_rectangle | ( | Point_d | q,
|  | Kd_tree_rectangle< FT, D > | r,
|  | vector< FT > & | dists
| ) |  |

Returns \( d^{power}\), where \( d\) denotes the distance between the query item `q` and the point on the boundary of `r` closest to `q`.

Stores the distances in each dimension in `dists`.

template<typename Traits >

FT CGAL::Weighted_Minkowski_distance< Traits >::transformed_distance | ( | FT | d) |  | const

Returns \( d^p\) for \( 0 < p <\infty\) .

Returns \( d\) for \( p=\infty\) .