mirror of https://github.com/CGAL/cgal
133 lines
5.3 KiB
TeX
133 lines
5.3 KiB
TeX
% =============================================================================
|
|
% The CGAL Reference Manual
|
|
% Chapter: Geometric Optimisation
|
|
% Concept: WidthTraits_3
|
|
% -----------------------------------------------------------------------------
|
|
% file : doc_tex/basic/Optimisation/Optimisation_ref/WidthTraits_3.tex
|
|
% author: Thomas Herrmann, Sven Schönherr <herrmann@ifor.math.ethz.ch>
|
|
% -----------------------------------------------------------------------------
|
|
% $CGAL_Chapter: Geometric Optimisation $
|
|
% $CGAL_Package: Optimisation_basic WIP $
|
|
% $Id$
|
|
% $Date$
|
|
% =============================================================================
|
|
|
|
\begin{ccRefConcept}{WidthTraits_3}
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccDefinition
|
|
|
|
This concept defines the requirements for traits classes of
|
|
\ccc{Width_3<Traits>}.
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccTypes
|
|
|
|
\ccSaveThreeColumns
|
|
\ccSetTwoColumns{WidthTraits_3:: ChullTraits;}{}
|
|
|
|
\ccGlueBegin
|
|
\ccNestedType{Point_3}{The point type. The (in)equality tests must be
|
|
available. Access to the point coordinates is done via the \ccc{get_.()}
|
|
functions. Constructing a point is done with the \ccc{make_point( )}
|
|
operation.}
|
|
\ccNestedType{Plane_3}{The plane type. Access to the coefficients of the
|
|
plane is made via the \ccc{get_.()} functions. Constructing a plane is
|
|
done with the \ccc{make_plane()} operation.}
|
|
\ccNestedType{Vector_3}{The vector type. There is no need to access the
|
|
coefficients of a vector; only constructing is required and is done with
|
|
the \ccc{make_vector} operation.}
|
|
\ccNestedType{ChullTraits}{The traits class for using the convex hull
|
|
algorithm. It must be a model of the concept ConvexHullTraits\_3.
|
|
This class is used only if the width is computed from a set
|
|
of points.}
|
|
\ccNestedType{RT}{Ring type numbers. Internally all numbers are treated as
|
|
ring type numbers, i.e., neither $/$-operator nor $\sqrt{.}$ nor other
|
|
inexact operations are used. But because the algorithm does not use any
|
|
divisions, but multiplication instead, the numbers can get really big.
|
|
Therefore it is recommended to use a ring type number, that provides
|
|
values of arbitrary length. Furthermore it is assumed that the underlying
|
|
number type of \ccc{Point_3}, \ccc{Plane_3} and \ccc{Vector_3} equals
|
|
\ccc{RT}.}
|
|
\ccGlueEnd
|
|
|
|
\emph{Notes:} If you want to compute the width of a \emph{polyhedron}
|
|
then you have to make sure that the point type in the traits class and
|
|
the point type in the polyhedron class are the same! The same holds
|
|
for \ccc{Traits::Plane_3} and \ccc{Polyhedron::Plane_3}.
|
|
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccCreation
|
|
\ccCreationVariable{traits}
|
|
|
|
Only a default constructor is required.
|
|
|
|
\ccConstructor{ WidthTraits_3( );}{}
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccOperations
|
|
Whatever the coordinates of the points are, it is required for the
|
|
width-algorithm to have access to the homogeneous representation of
|
|
points.
|
|
|
|
\ccSetThreeColumns{Vector_3}{get_plane_coordinates( );}{}
|
|
\ccGlueBegin
|
|
\ccFunction{ RT get_hx(const Point_3& p) const;}{returns the
|
|
homogeneous $x$-coordinate of point $p$.}
|
|
\ccFunction{ RT get_hy(const Point_3& p) const;}{returns the
|
|
homogeneous $y$-coordinate of point $p$.}
|
|
\ccFunction{ RT get_hz(const Point_3& p) const;}{returns the
|
|
homogeneous $z$-coordinate of point $p$.}
|
|
\ccFunction{ RT get_hw(const Point_3& p) const;}{returns the
|
|
homogenizing coordinate of point $p$.}
|
|
\ccFunction{ void get_point_coordinates(const Point_3& p, RT& px,
|
|
RT& py, RT& pz, RT& ph) const;}{returns all homogeneous coordinates
|
|
of point $p$ at once.}
|
|
\ccGlueEnd
|
|
|
|
\ccGlueBegin
|
|
\ccFunction{ RT get_a(const Plane_3& f) const;}{returns the first
|
|
coefficient of plane $f$.}
|
|
\ccFunction{ RT get_b(const Plane_3& f) const;}{returns the second
|
|
coefficient of plane $f$.}
|
|
\ccFunction{ RT get_c(const Plane_3& f) const;}{returns the third
|
|
coefficient of plane $f$.}
|
|
\ccFunction{ RT get_d(const Plane_3& f) const;}{returns the fourth
|
|
coefficient of plane $f$.}
|
|
\ccFunction{ void get_plane_coefficients(const Plane_3& f,
|
|
RT& a, RT& b, RT& c, RT& d)
|
|
const;}{returns all four plane coefficients of $f$ at once.}
|
|
\ccGlueEnd
|
|
|
|
\ccGlueBegin
|
|
\ccFunction{ Point_3 make_point(const RT& hx, const RT& hy, const RT& hz,
|
|
const RT& hw) const;}{returns a point of type
|
|
\ccc{Point_3} with homogeneous coordinates $hx$, $hy$, $hz$ and $hw$.}
|
|
\ccFunction{ Plane_3 make_plane(const RT& a, const RT& b, const
|
|
RT& c, const RT& d) const;}{returns a plane of type \ccc{Plane_3}
|
|
with coefficients $a$, $b$, $c$ and $d$.}
|
|
\ccFunction{ Vector_3 make_vector(const RT& a, const RT& b, const
|
|
RT& c) const;}{returns a vector of type \ccc{Vector_3} with the four
|
|
homogeneous coefficients $a$, $b$, $c$ and 1.}
|
|
\ccGlueEnd
|
|
|
|
\ccRestoreThreeColumns
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccHasModels
|
|
|
|
\ccRefIdfierPage{CGAL::Width_default_traits_3<K>}
|
|
|
|
% -----------------------------------------------------------------------------
|
|
\ccSeeAlso
|
|
|
|
\ccIndexTraitsClassRequirements[C]{Width_3}
|
|
\ccRefIdfierPage{CGAL::Width_3<Traits>}
|
|
|
|
% -----------------------------------------------------------------------------
|
|
|
|
\end{ccRefConcept}
|
|
|
|
% ===== EOF ===================================================================
|