% +------------------------------------------------------------------------+
% | Reference manual page: OrthogonalDistance.tex
% +------------------------------------------------------------------------+
% | 1.07.2001   Johan W.H. Tangelder
% | Package: ASPAS
% | 
\RCSdef{\RCSOrthogonalDistanceRev}{$Revision$}
\RCSdefDate{\RCSOrthogonalDistanceDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefConcept}{OrthogonalDistance}

%% \ccHtmlCrossLink{}     %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries

\ccDefinition
  
Requirements of an orthogonal distance class supporting incremental distance updates.
To optimize distance computations transformed distances are used. 
E.g., for an Euclidean distance the transformed distance is the squared Euclidean distance.


\ccRefines

GeneralDistance



\ccParameters

$d$-dimensional query items as well as $d$-dimensional points should be represented 
by a type $Point$. 


\ccTypes

\ccTypedef{Kernel_traits<Point>::Kernel::FT NT;}{Number type.}

\ccCreation
\ccCreationVariable{d}  %% choose variable name

\ccConstructor{OrthogonalDistance(int d);}{Constructor implementing distance for $d$-dimensional points.}

\ccOperations

\ccMethod{NT distance(Point q, Point r);}{Returns the transformed distance between \ccc{q} and \ccc{r}.}

\ccMethod{NT min_distance_to_rectangle(Point q, Kd_tree_rectangle<NT> r;);}
{Returns the transformed distance between \ccc{q} and
the point on the boundary of \ccc{r} closest to \ccc{q}.}

\ccMethod{NT max_distance_to_rectangle(Point q, Kd_tree_rectangle<NT> r;);}
{Returns the transformed distance between \ccc{q} and
the point on the boundary of \ccc{r} farthest to \ccc{q}.}

\ccMethod{NT transformed_distance(NT d);} {Returns the transformed distance.}

\ccMethod{NT inverse_of_transformed_distance(NT d);} {Returns the inverse of the transformed distance.}

\ccMethod{NT new_distance(NT dist, NT old_off, NT new_off, int cutting_dimension);} {Updates 
\ccc{dist} incrementally and returns the updated distance.}

\ccHasModels

\ccc{CGAL::Euclidean_distance<Point>},
\ccc{CGAL::Weighted_Minkowski_distance<Point>}.

\ccSeeAlso

GeneralDistance,
\ccc{CGAL::Euclidean_distance<Point>},
\ccc{CGAL::Weighted_Minkowski_distance<Point>}.

\end{ccRefConcept}

% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

