## OptimisationDTraits

### Definition

This concept defines the requirements for traits classes of d-dimensional optimisation algorithms.

### Types

OptimisationDTraits::Point_d
| point type used to represent the input points.
OptimisationDTraits::Rep_tag
| compile time tag to distinguish between Cartesian and homogeneous representation of the input points. Rep_tag has to be either CGAL::Cartesian_tag or CGAL::Homogeneous_tag.
OptimisationDTraits::RT
| number type used to represent the coordinates of the input points. It has to be a model for RingNumberType.
OptimisationDTraits::FT
| number type used to return either the squared radius of the smallest enclosing sphere or annulus, or the squared distance of the polytopes. FT has to be either RT or CGAL::Quotient<RT> if the input points have Cartesian or homogeneous representation, respectively (cf. Rep_tag).
OptimisationDTraits::Access_dimension_d
| data accessor object used to access the dimension of the input points.
OptimisationDTraits::Access_coordinates_begin_d
| data accessor object used to access the coordinates of the input points.
OptimisationDTraits::Construct_point_d
| constructor object used to construct either the center of the smallest enclosing sphere or annulus, or the points realizing the distance between the two polytopes.

The following two number types are only needed for CGAL::Min_annulus_d<Traits> and CGAL::Polytope_distance_d<Traits>.

OptimisationDTraits::ET
| exact number type used to do the exact computations in the underlying solver for linear programs. It has to to be a model for RingNumberType. There must be an implicit conversion from RT to ET available.
OptimisationDTraits::NT
| fast (possibly inexact) number type used to speed up the pricing step in the underlying solver for linear programs. It has to be a model for RingNumberType. There must be implicit conversions from RT to NT and from NT to ET available.

### Creation

Only default and copy constructor are required.

OptimisationDTraits traits;

OptimisationDTraits traits ( OptimisationDTraits);

### Operations

The following functions just return the corresponding function class object.

Access_dimension_d | traits.access_dimension_d_object ()
Access_coordinates_begin_d
| traits.access_coordinates_begin_d_object ()
Construct_point_d | traits.construct_point_d_object ()

### Has Models

CGAL::Optimisation_d_traits_2<K,ET,NT>
CGAL::Optimisation_d_traits_3<K,ET,NT>
CGAL::Optimisation_d_traits_d<K,ET,NT>

### See Also

CGAL::Min_sphere_d<Traits>
CGAL::Min_annulus_d<Traits>
CGAL::Polytope_distance_d<Traits>