The class Min_circle_2_adapterC2<PT,DA> interfaces the 2D optimisation algorithm for smallest enclosing circles with the point class PT. The data accessor DA [KW97] is used to access the x- and y-coordinate of PT, i.e. PT is supposed to have a Cartesian representation of its coordinates.
#include <CGAL/Min_circle_2_adapterC2.h>
| |
Data accessor for Cartesian coordinates.
| |
| |
Point type.
| |
| |
Circle type.
|
| |
|
|
| |
returns constants LEFTTURN, COLLINEAR, or RIGHTTURN iff r lies properly to the left of, on, or properly to the right of the oriented line through p and q, resp. |
Min_circle_2 , Min_circle_2_traits_2 , Min_circle_2_adapterH2 , Requirements of Traits Class Adapters to 2D Cartesian Points.
The following example illustrates the use of the traits class adapters with your own point class. For the sake of simplicity, we expect a point class with Cartesian double coordinates and access functions x() and y(). Based on this we show how to implement and use data accessors.
Note: In this release correct results are only guaranteed if exact arithmetic is used, so this example (using inexact floating-point arithmetic) is only intended to illustrate the techniques.
#include <CGAL/Min_circle_2_adapterC2.h> #include <CGAL/Min_circle_2.h> using namespace CGAL; // your own point class (Cartesian) class PtC { // ... public: PtC( double x, double y); double x( ) const; double y( ) const; // ... }; // the data accessor for PtC class PtC_DA { public: typedef double FT; void get( const PtC& p, double& x, double& y) const { x = p.x(); y = p.y(); } double get_x( const PtC& p) const { return( p.x()); } double get_y( const PtC& p) const { return( p.y()); } void set( PtC& p, double x, double y) const { p = PtC( x, y); } }; // some typedefs typedef Min_circle_2_adapterC2 < PtC, PtC_DA > AdapterC; typedef Min_circle_2 < AdapterC > Min_circle; // do something with Min_circle Min_circle mc( /*...*/ );