Switch from RT_sufficient to FT_necessary

This commit is contained in:
Mael Rouxel-Labbé
2022-09-22 12:02:53 +02:00
parent 01af5bce52
commit 214e072959
9 changed files with 137 additions and 159 deletions
@@ -398,7 +398,7 @@ namespace CartesianKernelFunctors {
Collinear_2(const Orientation_2 o_) : o(o_) {}
result_type
operator()(const Point_2& p, const Point_2& q, const Point_2& r, RT_sufficient = {}) const
operator()(const Point_2& p, const Point_2& q, const Point_2& r) const
{ return o(p, q, r) == COLLINEAR; }
};
@@ -410,7 +410,7 @@ namespace CartesianKernelFunctors {
typedef typename K::Boolean result_type;
result_type
operator()(const Point_3& p, const Point_3& q, const Point_3& r, RT_sufficient = {}) const
operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
return collinearC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -447,14 +447,14 @@ namespace CartesianKernelFunctors {
template <class T1, class T2, class T3>
result_type
operator()(const T1& p, const T2& q, const T3& r) const
operator()(const T1& p, const T2& q, const T3& r, FT_necessary = {}) const
{
return CGAL::compare(squared_distance(p, q), squared_distance(p, r));
}
template <class T1, class T2, class T3, class T4>
std::enable_if_t< !std::is_same<T4, RT_sufficient>::value, result_type >
operator()(const T1& p, const T2& q, const T3& r, const T4& s) const
std::enable_if_t<!std::is_same<T4, FT_necessary>::value, result_type>
operator()(const T1& p, const T2& q, const T3& r, const T4& s, FT_necessary = {}) const
{
return CGAL::compare(squared_distance(p, q), squared_distance(r, s));
}
@@ -566,7 +566,7 @@ namespace CartesianKernelFunctors {
typedef typename K::Comparison_result result_type;
result_type
operator()(const Point_3& p, const Point_3& q, const Point_3& r, RT_sufficient = {}) const
operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
return cmp_dist_to_pointC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -574,33 +574,33 @@ namespace CartesianKernelFunctors {
}
result_type
operator()(const Point_3& p1, const Segment_3& s1, const Segment_3& s2, RT_sufficient = {}) const
operator()(const Point_3& p1, const Segment_3& s1, const Segment_3& s2) const
{
return internal::compare_distance_pssC3(p1,s1,s2, K());
}
result_type
operator()(const Point_3& p1, const Point_3& p2, const Segment_3& s2, RT_sufficient = {}) const
operator()(const Point_3& p1, const Point_3& p2, const Segment_3& s2) const
{
return internal::compare_distance_ppsC3(p1,p2,s2, K());
}
result_type
operator()(const Point_3& p1, const Segment_3& s2, const Point_3& p2, RT_sufficient = {}) const
operator()(const Point_3& p1, const Segment_3& s2, const Point_3& p2) const
{
return opposite(internal::compare_distance_ppsC3(p1,p2,s2, K()));
}
template <class T1, class T2, class T3>
result_type
operator()(const T1& p, const T2& q, const T3& r) const
operator()(const T1& p, const T2& q, const T3& r, FT_necessary = {}) const
{
return CGAL::compare(squared_distance(p, q), squared_distance(p, r));
}
template <class T1, class T2, class T3, class T4>
std::enable_if_t< !std::is_same<T4, RT_sufficient>::value, result_type >
operator()(const T1& p, const T2& q, const T3& r, const T4& s) const
std::enable_if_t<!std::is_same<T4, FT_necessary>::value, result_type>
operator()(const T1& p, const T2& q, const T3& r, const T4& s, FT_necessary = {}) const
{
return CGAL::compare(squared_distance(p, q), squared_distance(r, s));
}
@@ -618,7 +618,7 @@ namespace CartesianKernelFunctors {
Comparison_result operator()(const Point_2& r,
const Weighted_point_2& p,
const Weighted_point_2& q, RT_sufficient = {}) const
const Weighted_point_2& q) const
{
return CGAL::compare_power_distanceC2(p.x(), p.y(), p.weight(),
q.x(), q.y(), q.weight(),
@@ -3769,8 +3769,7 @@ namespace CartesianKernelFunctors {
#endif // CGAL_kernel_exactness_preconditions
result_type
operator()(const Point_3& p, const Point_3& q, const Point_3& r,
RT_sufficient = {}) const
operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
return coplanar_orientationC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -3779,8 +3778,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& s,
RT_sufficient = {}) const
const Point_3& r, const Point_3& s) const
{
// p,q,r,s supposed to be coplanar
// p,q,r supposed to be non collinear
@@ -3821,8 +3819,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& t,
RT_sufficient = {}) const
const Point_3& r, const Point_3& t) const
{
// p,q,r,t are supposed to be coplanar.
// p,q,r determine an orientation of this plane (not collinear).
@@ -4209,20 +4206,19 @@ namespace CartesianKernelFunctors {
public:
typedef typename K::Orientation result_type;
result_type operator()(const Point_2& p, const Point_2& q, const Point_2& r,
RT_sufficient = {}) const
result_type operator()(const Point_2& p, const Point_2& q, const Point_2& r) const
{
return orientationC2(p.x(), p.y(), q.x(), q.y(), r.x(), r.y());
}
result_type
operator()(const Vector_2& u, const Vector_2& v, RT_sufficient = {}) const
operator()(const Vector_2& u, const Vector_2& v) const
{
return orientationC2(u.x(), u.y(), v.x(), v.y());
}
result_type
operator()(const Circle_2& c, RT_sufficient = {}) const
operator()(const Circle_2& c) const
{
return c.rep().orientation();
}
@@ -4240,7 +4236,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& s, RT_sufficient = {}) const
const Point_3& r, const Point_3& s) const
{
return orientationC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -4249,8 +4245,7 @@ namespace CartesianKernelFunctors {
}
result_type
operator()( const Vector_3& u, const Vector_3& v, const Vector_3& w,
RT_sufficient = {}) const
operator()( const Vector_3& u, const Vector_3& v, const Vector_3& w) const
{
return orientationC3(u.x(), u.y(), u.z(),
v.x(), v.y(), v.z(),
@@ -4259,7 +4254,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( Origin, const Point_3& u,
const Point_3& v, const Point_3& w, RT_sufficient = {}) const
const Point_3& v, const Point_3& w) const
{
return orientationC3(u.x(), u.y(), u.z(),
v.x(), v.y(), v.z(),
@@ -4267,13 +4262,13 @@ namespace CartesianKernelFunctors {
}
result_type
operator()( const Tetrahedron_3& t, RT_sufficient = {}) const
operator()( const Tetrahedron_3& t) const
{
return t.rep().orientation();
}
result_type
operator()(const Sphere_3& s, RT_sufficient = {}) const
operator()(const Sphere_3& s) const
{
return s.rep().orientation();
}
@@ -4291,8 +4286,7 @@ namespace CartesianKernelFunctors {
Oriented_side operator()(const Weighted_point_2& p,
const Weighted_point_2& q,
const Weighted_point_2& r,
const Weighted_point_2& t,
RT_sufficient = {}) const
const Weighted_point_2& t) const
{
//CGAL_kernel_precondition( ! collinear(p, q, r) );
return power_side_of_oriented_power_circleC2(p.x(), p.y(), p.weight(),
@@ -4313,8 +4307,7 @@ namespace CartesianKernelFunctors {
Oriented_side operator()(const Weighted_point_2& p,
const Weighted_point_2& q,
const Weighted_point_2& t,
RT_sufficient = {}) const
const Weighted_point_2& t) const
{
//CGAL_kernel_precondition( collinear(p, q, r) );
//CGAL_kernel_precondition( p.point() != q.point() );
@@ -4324,8 +4317,7 @@ namespace CartesianKernelFunctors {
}
Oriented_side operator()(const Weighted_point_2& p,
const Weighted_point_2& t,
RT_sufficient = {}) const
const Weighted_point_2& t) const
{
//CGAL_kernel_precondition( p.point() == r.point() );
Comparison_result r = CGAL::compare(p.weight(), t.weight());
@@ -4414,8 +4406,7 @@ namespace CartesianKernelFunctors {
typedef typename K::Bounded_side result_type;
result_type
operator()( const Point_2& p, const Point_2& q, const Point_2& t,
RT_sufficient = {}) const
operator()( const Point_2& p, const Point_2& q, const Point_2& t) const
{
return side_of_bounded_circleC2(p.x(), p.y(),
q.x(), q.y(),
@@ -4424,8 +4415,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_2& p, const Point_2& q,
const Point_2& r, const Point_2& t,
RT_sufficient = {}) const
const Point_2& r, const Point_2& t) const
{
return side_of_bounded_circleC2(p.x(), p.y(), q.x(), q.y(), r.x(), r.y(),
t.x(), t.y());
@@ -4440,8 +4430,7 @@ namespace CartesianKernelFunctors {
typedef typename K::Bounded_side result_type;
result_type
operator()( const Point_3& p, const Point_3& q, const Point_3& test,
RT_sufficient = {}) const
operator()( const Point_3& p, const Point_3& q, const Point_3& test) const
{
return side_of_bounded_sphereC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -4450,8 +4439,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& test,
RT_sufficient = {}) const
const Point_3& r, const Point_3& test) const
{
return side_of_bounded_sphereC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -4461,8 +4449,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q, const Point_3& r,
const Point_3& s, const Point_3& test,
RT_sufficient = {}) const
const Point_3& s, const Point_3& test) const
{
return side_of_bounded_sphereC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),
@@ -4481,8 +4468,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_2& p, const Point_2& q,
const Point_2& r, const Point_2& t,
RT_sufficient = {}) const
const Point_2& r, const Point_2& t) const
{
return side_of_oriented_circleC2(p.x(), p.y(),
q.x(), q.y(),
@@ -4500,8 +4486,7 @@ namespace CartesianKernelFunctors {
result_type
operator()( const Point_3& p, const Point_3& q, const Point_3& r,
const Point_3& s, const Point_3& test,
RT_sufficient = {}) const
const Point_3& s, const Point_3& test) const
{
return side_of_oriented_sphereC3(p.x(), p.y(), p.z(),
q.x(), q.y(), q.z(),