Program Listing for File ConvexHull.h

↰ Return to documentation for file (ADS/geometry/ConvexHull.h)

/*--------------------------------------------------------------------------*/
/*--------------------------- File ConvexHull.h ----------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_ConvexHull
 #define __ADS_ConvexHull
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include <algorithm>
#include "ADS/Contract.h"
#include "ADS/sort/Sort.h"

#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
#include <vector>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

struct Point {
 long x , y;
 bool operator==( const Point & ) const = default;
 };

inline long long cross( const Point & a , const Point & b ,
                        const Point & c );

inline bool sameSide( const Point & p1 , const Point & p2 , const Point & p ,
                      const Point & q );

inline double pseudoAngle( long dx , long dy );

inline std::vector< Point > convexHullBrute( std::vector< Point > P );

inline std::vector< Point > graham( std::vector< Point > P );

inline std::vector< Point > convexHull( const std::vector< Point > & P );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/geometry/impl/ConvexHull.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* ConvexHull.h included */

/*--------------------------------------------------------------------------*/
/*------------------------- End File ConvexHull.h --------------------------*/
/*--------------------------------------------------------------------------*/