Oriented_side_d

This commit is contained in:
Marc Glisse 2013-07-28 20:21:39 +02:00
parent 4dc6fa5d2a
commit 8344312677
2 changed files with 31 additions and 1 deletions

View File

@ -114,7 +114,7 @@ template <class Base_> struct Kernel_d_interface : public Base_ {
//typedef typename Get_functor<Base, Has_on_positive_side_tag>::type Has_on_positive_side_d;
//typedef typename Get_functor<Base, Linear_rank_tag>::type Linear_rank_d;
//typedef typename Get_functor<Base, Linearly_independent_tag>::type Linearly_independent_d;
//typedef typename Get_functor<Base, Oriented_side_tag>::type Oriented_side_d;
typedef typename Get_functor<Base, Oriented_side_tag>::type Oriented_side_d;
//typedef typename Get_functor<Base, Side_of_bounded_sphere_tag>::type Side_of_bounded_sphere_d;
typedef typename Get_functor<Base, Center_of_sphere_tag>::type Center_of_sphere_d;

View File

@ -736,6 +736,36 @@ template<class R_> struct Equal_points : private Store_kernel<R_> {
CGAL_KD_DEFAULT_FUNCTOR(Equal_points_tag,(CartesianDKernelFunctors::Equal_points<K>),(),(Construct_ttag<Point_cartesian_const_iterator_tag>));
namespace CartesianDKernelFunctors {
template<class R_> struct Oriented_side : private Store_kernel<R_> {
CGAL_FUNCTOR_INIT_STORE(Oriented_side)
typedef R_ R;
typedef typename Get_type<R, Oriented_side_tag>::type result_type;
typedef typename Get_type<R, Point_tag>::type Point;
typedef typename Get_type<R, Hyperplane_tag>::type Hyperplane;
typedef typename Get_type<R, Sphere_tag>::type Sphere;
typedef typename Get_functor<R, Value_at_tag>::type VA;
typedef typename Get_functor<R, Hyperplane_translation_tag>::type HT;
typedef typename Get_functor<R, Squared_distance_tag>::type SD;
typedef typename Get_functor<R, Squared_radius_tag>::type SR;
typedef typename Get_functor<R, Center_of_sphere_tag>::type CS;
result_type operator()(Hyperplane const&h, Point const&p)const{
HT ht(this->kernel());
VA va(this->kernel());
return CGAL::compare(va(h,p),ht(h));
}
result_type operator()(Sphere const&s, Point const&p)const{
SD sd(this->kernel());
SR sr(this->kernel());
CS cs(this->kernel());
return CGAL::compare(sd(cs(s),p),sr(s));
}
};
}
CGAL_KD_DEFAULT_FUNCTOR(Oriented_side_tag,(CartesianDKernelFunctors::Oriented_side<K>),(Point_tag,Sphere_tag,Hyperplane_tag),(Value_at_tag,Hyperplane_translation_tag,Squared_distance_tag,Squared_radius_tag,Center_of_sphere_tag));
}
#include <CGAL/Kernel_d/Coaffine.h>
#endif // CGAL_KERNEL_D_FUNCTION_OBJECTS_CARTESIAN_H