mirror of https://github.com/CGAL/cgal
Moved from Filter/.
This commit is contained in:
parent
66f5e0711e
commit
4f3b42af42
|
|
@ -0,0 +1,23 @@
|
|||
#
|
||||
# This is the Makefile responsible for constructing the filtered predicates
|
||||
# files from the generic ones in $CGAL/include/CGAL.
|
||||
#
|
||||
# Maybe you need GNU Make, I don't know.
|
||||
#
|
||||
# Sylvain Pion, 1998.
|
||||
|
||||
# Tell where the script is.
|
||||
SCRIPT = ../../../examples/Interval_arithmetic/filtered_predicate_converter
|
||||
|
||||
# Tell which files must be parsed.
|
||||
OBJECTS = predicates_on_ftC2.h predicates_on_ftC3.h predicates_on_rtH2.h
|
||||
|
||||
#### Don't touch below.
|
||||
|
||||
% :: $(CGAL)/include/CGAL/% $(SCRIPT)
|
||||
$(SCRIPT) < $< > $@
|
||||
|
||||
all: $(OBJECTS)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJECTS)
|
||||
|
|
@ -0,0 +1,961 @@
|
|||
// ======================================================================
|
||||
//
|
||||
// Copyright (c) 1998 The CGAL Consortium
|
||||
//
|
||||
// This software and related documentation is part of an INTERNAL release
|
||||
// of the Computational Geometry Algorithms Library (CGAL). It is not
|
||||
// intended for general use.
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
//
|
||||
// release :
|
||||
// release_date :
|
||||
//
|
||||
// file : include/CGAL/Filter/predicates_on_ftC2.h
|
||||
// package : Interval_arithmetic
|
||||
// source : include/CGAL/predicates_on_ftC2.h
|
||||
// revision : $Revision$
|
||||
// revision_date :
|
||||
// author(s) : Sylvain.Pion@sophia.inria.fr
|
||||
//
|
||||
// coordinator : INRIA Sophia-Antipolis (Herve.Bronnimann@sophia.inria.fr)
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
|
||||
#ifndef CGAL_FILTER_PREDICATES_ON_FTC2_H
|
||||
#define CGAL_FILTER_PREDICATES_ON_FTC2_H
|
||||
|
||||
// This file is automatically generated with the script for filtering
|
||||
// predicates, using Interval arithmetic.
|
||||
|
||||
#include <CGAL/Interval_arithmetic.h>
|
||||
|
||||
#ifndef CGAL_DETERMINANT_H
|
||||
#include <CGAL/determinant.h>
|
||||
#endif // CGAL_DETERMINANT_H
|
||||
|
||||
#ifndef CGAL_BASIC_CONSTRUCTIONS_FTC2_H
|
||||
#include <CGAL/basic_constructions_ftC2.h>
|
||||
#endif
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_xC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &l1a,
|
||||
const CGAL_Filtering<CT,ET> &l1b,
|
||||
const CGAL_Filtering<CT,ET> &l1c,
|
||||
const CGAL_Filtering<CT,ET> &l2a,
|
||||
const CGAL_Filtering<CT,ET> &l2b,
|
||||
const CGAL_Filtering<CT,ET> &l2c)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_xC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(l1a.value),
|
||||
CGAL_to_Interval_nt_advanced(l1b.value),
|
||||
CGAL_to_Interval_nt_advanced(l1c.value),
|
||||
CGAL_to_Interval_nt_advanced(l2a.value),
|
||||
CGAL_to_Interval_nt_advanced(l2b.value),
|
||||
CGAL_to_Interval_nt_advanced(l2c.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_xC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(l1a.value),
|
||||
CGAL_to_exact_type<ET>(l1b.value),
|
||||
CGAL_to_exact_type<ET>(l1c.value),
|
||||
CGAL_to_exact_type<ET>(l2a.value),
|
||||
CGAL_to_exact_type<ET>(l2b.value),
|
||||
CGAL_to_exact_type<ET>(l2c.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_xC2(const CGAL_Filtering<CT,ET> &l1a,
|
||||
const CGAL_Filtering<CT,ET> &l1b,
|
||||
const CGAL_Filtering<CT,ET> &l1c,
|
||||
const CGAL_Filtering<CT,ET> &l2a,
|
||||
const CGAL_Filtering<CT,ET> &l2b,
|
||||
const CGAL_Filtering<CT,ET> &l2c,
|
||||
const CGAL_Filtering<CT,ET> &h1a,
|
||||
const CGAL_Filtering<CT,ET> &h1b,
|
||||
const CGAL_Filtering<CT,ET> &h1c,
|
||||
const CGAL_Filtering<CT,ET> &h2a,
|
||||
const CGAL_Filtering<CT,ET> &h2b,
|
||||
const CGAL_Filtering<CT,ET> &h2c)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_xC2(
|
||||
CGAL_to_Interval_nt_advanced(l1a.value),
|
||||
CGAL_to_Interval_nt_advanced(l1b.value),
|
||||
CGAL_to_Interval_nt_advanced(l1c.value),
|
||||
CGAL_to_Interval_nt_advanced(l2a.value),
|
||||
CGAL_to_Interval_nt_advanced(l2b.value),
|
||||
CGAL_to_Interval_nt_advanced(l2c.value),
|
||||
CGAL_to_Interval_nt_advanced(h1a.value),
|
||||
CGAL_to_Interval_nt_advanced(h1b.value),
|
||||
CGAL_to_Interval_nt_advanced(h1c.value),
|
||||
CGAL_to_Interval_nt_advanced(h2a.value),
|
||||
CGAL_to_Interval_nt_advanced(h2b.value),
|
||||
CGAL_to_Interval_nt_advanced(h2c.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_xC2(
|
||||
CGAL_to_exact_type<ET>(l1a.value),
|
||||
CGAL_to_exact_type<ET>(l1b.value),
|
||||
CGAL_to_exact_type<ET>(l1c.value),
|
||||
CGAL_to_exact_type<ET>(l2a.value),
|
||||
CGAL_to_exact_type<ET>(l2b.value),
|
||||
CGAL_to_exact_type<ET>(l2c.value),
|
||||
CGAL_to_exact_type<ET>(h1a.value),
|
||||
CGAL_to_exact_type<ET>(h1b.value),
|
||||
CGAL_to_exact_type<ET>(h1c.value),
|
||||
CGAL_to_exact_type<ET>(h2a.value),
|
||||
CGAL_to_exact_type<ET>(h2b.value),
|
||||
CGAL_to_exact_type<ET>(h2c.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &la,
|
||||
const CGAL_Filtering<CT,ET> &lb,
|
||||
const CGAL_Filtering<CT,ET> &lc)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(la.value),
|
||||
CGAL_to_Interval_nt_advanced(lb.value),
|
||||
CGAL_to_Interval_nt_advanced(lc.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(la.value),
|
||||
CGAL_to_exact_type<ET>(lb.value),
|
||||
CGAL_to_exact_type<ET>(lc.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &l1a,
|
||||
const CGAL_Filtering<CT,ET> &l1b,
|
||||
const CGAL_Filtering<CT,ET> &l1c,
|
||||
const CGAL_Filtering<CT,ET> &l2a,
|
||||
const CGAL_Filtering<CT,ET> &l2b,
|
||||
const CGAL_Filtering<CT,ET> &l2c)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(l1a.value),
|
||||
CGAL_to_Interval_nt_advanced(l1b.value),
|
||||
CGAL_to_Interval_nt_advanced(l1c.value),
|
||||
CGAL_to_Interval_nt_advanced(l2a.value),
|
||||
CGAL_to_Interval_nt_advanced(l2b.value),
|
||||
CGAL_to_Interval_nt_advanced(l2c.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(l1a.value),
|
||||
CGAL_to_exact_type<ET>(l1b.value),
|
||||
CGAL_to_exact_type<ET>(l1c.value),
|
||||
CGAL_to_exact_type<ET>(l2a.value),
|
||||
CGAL_to_exact_type<ET>(l2b.value),
|
||||
CGAL_to_exact_type<ET>(l2c.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &l1a,
|
||||
const CGAL_Filtering<CT,ET> &l1b,
|
||||
const CGAL_Filtering<CT,ET> &l1c,
|
||||
const CGAL_Filtering<CT,ET> &l2a,
|
||||
const CGAL_Filtering<CT,ET> &l2b,
|
||||
const CGAL_Filtering<CT,ET> &l2c,
|
||||
const CGAL_Filtering<CT,ET> &ha,
|
||||
const CGAL_Filtering<CT,ET> &hb,
|
||||
const CGAL_Filtering<CT,ET> &hc)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_Interval_nt_advanced(l1a.value),
|
||||
CGAL_to_Interval_nt_advanced(l1b.value),
|
||||
CGAL_to_Interval_nt_advanced(l1c.value),
|
||||
CGAL_to_Interval_nt_advanced(l2a.value),
|
||||
CGAL_to_Interval_nt_advanced(l2b.value),
|
||||
CGAL_to_Interval_nt_advanced(l2c.value),
|
||||
CGAL_to_Interval_nt_advanced(ha.value),
|
||||
CGAL_to_Interval_nt_advanced(hb.value),
|
||||
CGAL_to_Interval_nt_advanced(hc.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_exact_type<ET>(l1a.value),
|
||||
CGAL_to_exact_type<ET>(l1b.value),
|
||||
CGAL_to_exact_type<ET>(l1c.value),
|
||||
CGAL_to_exact_type<ET>(l2a.value),
|
||||
CGAL_to_exact_type<ET>(l2b.value),
|
||||
CGAL_to_exact_type<ET>(l2c.value),
|
||||
CGAL_to_exact_type<ET>(ha.value),
|
||||
CGAL_to_exact_type<ET>(hb.value),
|
||||
CGAL_to_exact_type<ET>(hc.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_y_at_xC2(const CGAL_Filtering<CT,ET> &l1a,
|
||||
const CGAL_Filtering<CT,ET> &l1b,
|
||||
const CGAL_Filtering<CT,ET> &l1c,
|
||||
const CGAL_Filtering<CT,ET> &l2a,
|
||||
const CGAL_Filtering<CT,ET> &l2b,
|
||||
const CGAL_Filtering<CT,ET> &l2c,
|
||||
const CGAL_Filtering<CT,ET> &h1a,
|
||||
const CGAL_Filtering<CT,ET> &h1b,
|
||||
const CGAL_Filtering<CT,ET> &h1c,
|
||||
const CGAL_Filtering<CT,ET> &h2a,
|
||||
const CGAL_Filtering<CT,ET> &h2b,
|
||||
const CGAL_Filtering<CT,ET> &h2c)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_Interval_nt_advanced(l1a.value),
|
||||
CGAL_to_Interval_nt_advanced(l1b.value),
|
||||
CGAL_to_Interval_nt_advanced(l1c.value),
|
||||
CGAL_to_Interval_nt_advanced(l2a.value),
|
||||
CGAL_to_Interval_nt_advanced(l2b.value),
|
||||
CGAL_to_Interval_nt_advanced(l2c.value),
|
||||
CGAL_to_Interval_nt_advanced(h1a.value),
|
||||
CGAL_to_Interval_nt_advanced(h1b.value),
|
||||
CGAL_to_Interval_nt_advanced(h1c.value),
|
||||
CGAL_to_Interval_nt_advanced(h2a.value),
|
||||
CGAL_to_Interval_nt_advanced(h2b.value),
|
||||
CGAL_to_Interval_nt_advanced(h2c.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_y_at_xC2(
|
||||
CGAL_to_exact_type<ET>(l1a.value),
|
||||
CGAL_to_exact_type<ET>(l1b.value),
|
||||
CGAL_to_exact_type<ET>(l1c.value),
|
||||
CGAL_to_exact_type<ET>(l2a.value),
|
||||
CGAL_to_exact_type<ET>(l2b.value),
|
||||
CGAL_to_exact_type<ET>(l2c.value),
|
||||
CGAL_to_exact_type<ET>(h1a.value),
|
||||
CGAL_to_exact_type<ET>(h1b.value),
|
||||
CGAL_to_exact_type<ET>(h1c.value),
|
||||
CGAL_to_exact_type<ET>(h2a.value),
|
||||
CGAL_to_exact_type<ET>(h2b.value),
|
||||
CGAL_to_exact_type<ET>(h2c.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// inline
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_deltax_deltayC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &sy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_deltax_deltayC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_deltax_deltayC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(sy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
CGAL_Comparison_result
|
||||
// inline
|
||||
CGAL_compare_lexicographically_xyC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_lexicographically_xyC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_lexicographically_xyC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
CGAL_Orientation
|
||||
CGAL_orientationC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Orientation result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_orientationC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_orientationC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_collinear_are_ordered_along_lineC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinear_are_ordered_along_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinear_are_ordered_along_lineC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_collinear_are_strictly_ordered_along_lineC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinear_are_strictly_ordered_along_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinear_are_strictly_ordered_along_lineC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Oriented_side
|
||||
CGAL_side_of_oriented_circleC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &tx,
|
||||
const CGAL_Filtering<CT,ET> &ty)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Oriented_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_oriented_circleC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(tx.value),
|
||||
CGAL_to_Interval_nt_advanced(ty.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_oriented_circleC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(tx.value),
|
||||
CGAL_to_exact_type<ET>(ty.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Bounded_side
|
||||
CGAL_side_of_bounded_circleC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &tx,
|
||||
const CGAL_Filtering<CT,ET> &ty)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Bounded_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_bounded_circleC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(tx.value),
|
||||
CGAL_to_Interval_nt_advanced(ty.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_bounded_circleC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(tx.value),
|
||||
CGAL_to_exact_type<ET>(ty.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_dist_to_pointC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_dist_to_pointC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_dist_to_pointC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_dist_to_pointC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_dist_to_pointC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_dist_to_pointC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_dist_to_pointC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
|
||||
const CGAL_Filtering<CT,ET> &lb,
|
||||
const CGAL_Filtering<CT,ET> &lc,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(la.value),
|
||||
CGAL_to_Interval_nt_advanced(lb.value),
|
||||
CGAL_to_Interval_nt_advanced(lc.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(la.value),
|
||||
CGAL_to_exact_type<ET>(lb.value),
|
||||
CGAL_to_exact_type<ET>(lc.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
|
||||
const CGAL_Filtering<CT,ET> &lb,
|
||||
const CGAL_Filtering<CT,ET> &lc,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(la.value),
|
||||
CGAL_to_Interval_nt_advanced(lb.value),
|
||||
CGAL_to_Interval_nt_advanced(lc.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(la.value),
|
||||
CGAL_to_exact_type<ET>(lb.value),
|
||||
CGAL_to_exact_type<ET>(lc.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &la,
|
||||
const CGAL_Filtering<CT,ET> &lb,
|
||||
const CGAL_Filtering<CT,ET> &lc,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(la.value),
|
||||
CGAL_to_Interval_nt_advanced(lb.value),
|
||||
CGAL_to_Interval_nt_advanced(lc.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(la.value),
|
||||
CGAL_to_exact_type<ET>(lb.value),
|
||||
CGAL_to_exact_type<ET>(lc.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_signed_dist_to_lineC2(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_signed_dist_to_lineC2(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_signed_dist_to_lineC2(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef CGAL_FILTER_H
|
||||
#include <CGAL/Filter/predicates_on_ftC2.h>
|
||||
#endif
|
||||
|
||||
|
||||
#endif // CGAL_FILTER_PREDICATES_ON_FTC2_H
|
||||
|
|
@ -0,0 +1,900 @@
|
|||
// ======================================================================
|
||||
//
|
||||
// Copyright (c) 1997 The CGAL Consortium
|
||||
//
|
||||
// This software and related documentation is part of an INTERNAL release
|
||||
// of the Computational Geometry Algorithms Library (CGAL). It is not
|
||||
// intended for general use.
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
//
|
||||
// release :
|
||||
// release_date :
|
||||
//
|
||||
// file : include/CGAL/Filter/predicates_on_ftC3.h
|
||||
// package : Interval_arithmetic
|
||||
// source : include/CGAL/predicates_on_ftC3.h
|
||||
// revision : $Revision$
|
||||
// revision_date :
|
||||
// author(s) : Sylvain.Pion@sophia.inria.fr
|
||||
//
|
||||
// coordinator : INRIA Sophia-Antipolis (Herve.Bronnimann@sophia.inria.fr)
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
|
||||
#ifndef CGAL_FILTER_PREDICATES_ON_FTC3_H
|
||||
#define CGAL_FILTER_PREDICATES_ON_FTC3_H
|
||||
|
||||
// This file is automatically generated with the script for filtering
|
||||
// predicates, using Interval arithmetic.
|
||||
|
||||
#include <CGAL/Interval_arithmetic.h>
|
||||
|
||||
#ifndef CGAL_DETERMINANT_H
|
||||
#include <CGAL/determinant.h>
|
||||
#endif // CGAL_DETERMINANT_H
|
||||
#ifndef CGAL_BASIC_CONSTRUCTIONS_FTC3_H
|
||||
#include <CGAL/basic_constructions_ftC3.h>
|
||||
#endif // CGAL_BASIC_CONSTRUCTIONS_FTC3_H
|
||||
|
||||
template < class CT, class ET >
|
||||
CGAL_Comparison_result
|
||||
CGAL_compare_lexicographically_xyzC3(const CGAL_Filtering<CT,ET> &x1,
|
||||
const CGAL_Filtering<CT,ET> &y1,
|
||||
const CGAL_Filtering<CT,ET> &z1,
|
||||
const CGAL_Filtering<CT,ET> &x2,
|
||||
const CGAL_Filtering<CT,ET> &y2,
|
||||
const CGAL_Filtering<CT,ET> &z2)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_compare_lexicographically_xyzC3(
|
||||
CGAL_to_Interval_nt_advanced(x1.value),
|
||||
CGAL_to_Interval_nt_advanced(y1.value),
|
||||
CGAL_to_Interval_nt_advanced(z1.value),
|
||||
CGAL_to_Interval_nt_advanced(x2.value),
|
||||
CGAL_to_Interval_nt_advanced(y2.value),
|
||||
CGAL_to_Interval_nt_advanced(z2.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_compare_lexicographically_xyzC3(
|
||||
CGAL_to_exact_type<ET>(x1.value),
|
||||
CGAL_to_exact_type<ET>(y1.value),
|
||||
CGAL_to_exact_type<ET>(z1.value),
|
||||
CGAL_to_exact_type<ET>(x2.value),
|
||||
CGAL_to_exact_type<ET>(y2.value),
|
||||
CGAL_to_exact_type<ET>(z2.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
bool
|
||||
CGAL_collinearC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinearC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinearC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
CGAL_Orientation
|
||||
CGAL_orientationC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy,
|
||||
const CGAL_Filtering<CT,ET> &sz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Orientation result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_orientationC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value),
|
||||
CGAL_to_Interval_nt_advanced(sz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_orientationC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value),
|
||||
CGAL_to_exact_type<ET>(sz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
bool
|
||||
CGAL_collinear_are_ordered_along_lineC3(
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinear_are_ordered_along_lineC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinear_are_ordered_along_lineC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
bool
|
||||
CGAL_collinear_are_strictly_ordered_along_lineC3(
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinear_are_strictly_ordered_along_lineC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinear_are_strictly_ordered_along_lineC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
template < class CT, class ET >
|
||||
CGAL_Oriented_side
|
||||
CGAL_side_of_oriented_sphereC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy,
|
||||
const CGAL_Filtering<CT,ET> &sz,
|
||||
const CGAL_Filtering<CT,ET> &tx,
|
||||
const CGAL_Filtering<CT,ET> &ty,
|
||||
const CGAL_Filtering<CT,ET> &tz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Oriented_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_oriented_sphereC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value),
|
||||
CGAL_to_Interval_nt_advanced(sz.value),
|
||||
CGAL_to_Interval_nt_advanced(tx.value),
|
||||
CGAL_to_Interval_nt_advanced(ty.value),
|
||||
CGAL_to_Interval_nt_advanced(tz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_oriented_sphereC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value),
|
||||
CGAL_to_exact_type<ET>(sz.value),
|
||||
CGAL_to_exact_type<ET>(tx.value),
|
||||
CGAL_to_exact_type<ET>(ty.value),
|
||||
CGAL_to_exact_type<ET>(tz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
CGAL_Bounded_side
|
||||
CGAL_side_of_bounded_sphereC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz,
|
||||
const CGAL_Filtering<CT,ET> &sx,
|
||||
const CGAL_Filtering<CT,ET> &sy,
|
||||
const CGAL_Filtering<CT,ET> &sz,
|
||||
const CGAL_Filtering<CT,ET> &tx,
|
||||
const CGAL_Filtering<CT,ET> &ty,
|
||||
const CGAL_Filtering<CT,ET> &tz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Bounded_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_bounded_sphereC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value),
|
||||
CGAL_to_Interval_nt_advanced(sx.value),
|
||||
CGAL_to_Interval_nt_advanced(sy.value),
|
||||
CGAL_to_Interval_nt_advanced(sz.value),
|
||||
CGAL_to_Interval_nt_advanced(tx.value),
|
||||
CGAL_to_Interval_nt_advanced(ty.value),
|
||||
CGAL_to_Interval_nt_advanced(tz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_bounded_sphereC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value),
|
||||
CGAL_to_exact_type<ET>(sx.value),
|
||||
CGAL_to_exact_type<ET>(sy.value),
|
||||
CGAL_to_exact_type<ET>(sz.value),
|
||||
CGAL_to_exact_type<ET>(tx.value),
|
||||
CGAL_to_exact_type<ET>(ty.value),
|
||||
CGAL_to_exact_type<ET>(tz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_dist_to_pointC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_dist_to_pointC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_dist_to_pointC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_dist_to_pointC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_dist_to_pointC3(const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz,
|
||||
const CGAL_Filtering<CT,ET> &rx,
|
||||
const CGAL_Filtering<CT,ET> &ry,
|
||||
const CGAL_Filtering<CT,ET> &rz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_dist_to_pointC3(
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value),
|
||||
CGAL_to_Interval_nt_advanced(rx.value),
|
||||
CGAL_to_Interval_nt_advanced(ry.value),
|
||||
CGAL_to_Interval_nt_advanced(rz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_dist_to_pointC3(
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value),
|
||||
CGAL_to_exact_type<ET>(rx.value),
|
||||
CGAL_to_exact_type<ET>(ry.value),
|
||||
CGAL_to_exact_type<ET>(rz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &pa,
|
||||
const CGAL_Filtering<CT,ET> &pb,
|
||||
const CGAL_Filtering<CT,ET> &pc,
|
||||
const CGAL_Filtering<CT,ET> &pd,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(pa.value),
|
||||
CGAL_to_Interval_nt_advanced(pb.value),
|
||||
CGAL_to_Interval_nt_advanced(pc.value),
|
||||
CGAL_to_Interval_nt_advanced(pd.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(pa.value),
|
||||
CGAL_to_exact_type<ET>(pb.value),
|
||||
CGAL_to_exact_type<ET>(pc.value),
|
||||
CGAL_to_exact_type<ET>(pd.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &pa,
|
||||
const CGAL_Filtering<CT,ET> &pb,
|
||||
const CGAL_Filtering<CT,ET> &pc,
|
||||
const CGAL_Filtering<CT,ET> &pd,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(pa.value),
|
||||
CGAL_to_Interval_nt_advanced(pb.value),
|
||||
CGAL_to_Interval_nt_advanced(pc.value),
|
||||
CGAL_to_Interval_nt_advanced(pd.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(pa.value),
|
||||
CGAL_to_exact_type<ET>(pb.value),
|
||||
CGAL_to_exact_type<ET>(pc.value),
|
||||
CGAL_to_exact_type<ET>(pd.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &pa,
|
||||
const CGAL_Filtering<CT,ET> &pb,
|
||||
const CGAL_Filtering<CT,ET> &pc,
|
||||
const CGAL_Filtering<CT,ET> &pd,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(pa.value),
|
||||
CGAL_to_Interval_nt_advanced(pb.value),
|
||||
CGAL_to_Interval_nt_advanced(pc.value),
|
||||
CGAL_to_Interval_nt_advanced(pd.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(pa.value),
|
||||
CGAL_to_exact_type<ET>(pb.value),
|
||||
CGAL_to_exact_type<ET>(pc.value),
|
||||
CGAL_to_exact_type<ET>(pd.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
CGAL_Comparison_result
|
||||
CGAL_cmp_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &ppx,
|
||||
const CGAL_Filtering<CT,ET> &ppy,
|
||||
const CGAL_Filtering<CT,ET> &ppz,
|
||||
const CGAL_Filtering<CT,ET> &pqx,
|
||||
const CGAL_Filtering<CT,ET> &pqy,
|
||||
const CGAL_Filtering<CT,ET> &pqz,
|
||||
const CGAL_Filtering<CT,ET> &prx,
|
||||
const CGAL_Filtering<CT,ET> &pry,
|
||||
const CGAL_Filtering<CT,ET> &prz,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Comparison_result result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_cmp_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(ppx.value),
|
||||
CGAL_to_Interval_nt_advanced(ppy.value),
|
||||
CGAL_to_Interval_nt_advanced(ppz.value),
|
||||
CGAL_to_Interval_nt_advanced(pqx.value),
|
||||
CGAL_to_Interval_nt_advanced(pqy.value),
|
||||
CGAL_to_Interval_nt_advanced(pqz.value),
|
||||
CGAL_to_Interval_nt_advanced(prx.value),
|
||||
CGAL_to_Interval_nt_advanced(pry.value),
|
||||
CGAL_to_Interval_nt_advanced(prz.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_cmp_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(ppx.value),
|
||||
CGAL_to_exact_type<ET>(ppy.value),
|
||||
CGAL_to_exact_type<ET>(ppz.value),
|
||||
CGAL_to_exact_type<ET>(pqx.value),
|
||||
CGAL_to_exact_type<ET>(pqy.value),
|
||||
CGAL_to_exact_type<ET>(pqz.value),
|
||||
CGAL_to_exact_type<ET>(prx.value),
|
||||
CGAL_to_exact_type<ET>(pry.value),
|
||||
CGAL_to_exact_type<ET>(prz.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_larger_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &ppx,
|
||||
const CGAL_Filtering<CT,ET> &ppy,
|
||||
const CGAL_Filtering<CT,ET> &ppz,
|
||||
const CGAL_Filtering<CT,ET> &pqx,
|
||||
const CGAL_Filtering<CT,ET> &pqy,
|
||||
const CGAL_Filtering<CT,ET> &pqz,
|
||||
const CGAL_Filtering<CT,ET> &prx,
|
||||
const CGAL_Filtering<CT,ET> &pry,
|
||||
const CGAL_Filtering<CT,ET> &prz,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_larger_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(ppx.value),
|
||||
CGAL_to_Interval_nt_advanced(ppy.value),
|
||||
CGAL_to_Interval_nt_advanced(ppz.value),
|
||||
CGAL_to_Interval_nt_advanced(pqx.value),
|
||||
CGAL_to_Interval_nt_advanced(pqy.value),
|
||||
CGAL_to_Interval_nt_advanced(pqz.value),
|
||||
CGAL_to_Interval_nt_advanced(prx.value),
|
||||
CGAL_to_Interval_nt_advanced(pry.value),
|
||||
CGAL_to_Interval_nt_advanced(prz.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_larger_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(ppx.value),
|
||||
CGAL_to_exact_type<ET>(ppy.value),
|
||||
CGAL_to_exact_type<ET>(ppz.value),
|
||||
CGAL_to_exact_type<ET>(pqx.value),
|
||||
CGAL_to_exact_type<ET>(pqy.value),
|
||||
CGAL_to_exact_type<ET>(pqz.value),
|
||||
CGAL_to_exact_type<ET>(prx.value),
|
||||
CGAL_to_exact_type<ET>(pry.value),
|
||||
CGAL_to_exact_type<ET>(prz.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_LARGE_INLINE
|
||||
bool
|
||||
CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
const CGAL_Filtering<CT,ET> &ppx,
|
||||
const CGAL_Filtering<CT,ET> &ppy,
|
||||
const CGAL_Filtering<CT,ET> &ppz,
|
||||
const CGAL_Filtering<CT,ET> &pqx,
|
||||
const CGAL_Filtering<CT,ET> &pqy,
|
||||
const CGAL_Filtering<CT,ET> &pqz,
|
||||
const CGAL_Filtering<CT,ET> &prx,
|
||||
const CGAL_Filtering<CT,ET> &pry,
|
||||
const CGAL_Filtering<CT,ET> &prz,
|
||||
const CGAL_Filtering<CT,ET> &px,
|
||||
const CGAL_Filtering<CT,ET> &py,
|
||||
const CGAL_Filtering<CT,ET> &pz,
|
||||
const CGAL_Filtering<CT,ET> &qx,
|
||||
const CGAL_Filtering<CT,ET> &qy,
|
||||
const CGAL_Filtering<CT,ET> &qz)
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
CGAL_to_Interval_nt_advanced(ppx.value),
|
||||
CGAL_to_Interval_nt_advanced(ppy.value),
|
||||
CGAL_to_Interval_nt_advanced(ppz.value),
|
||||
CGAL_to_Interval_nt_advanced(pqx.value),
|
||||
CGAL_to_Interval_nt_advanced(pqy.value),
|
||||
CGAL_to_Interval_nt_advanced(pqz.value),
|
||||
CGAL_to_Interval_nt_advanced(prx.value),
|
||||
CGAL_to_Interval_nt_advanced(pry.value),
|
||||
CGAL_to_Interval_nt_advanced(prz.value),
|
||||
CGAL_to_Interval_nt_advanced(px.value),
|
||||
CGAL_to_Interval_nt_advanced(py.value),
|
||||
CGAL_to_Interval_nt_advanced(pz.value),
|
||||
CGAL_to_Interval_nt_advanced(qx.value),
|
||||
CGAL_to_Interval_nt_advanced(qy.value),
|
||||
CGAL_to_Interval_nt_advanced(qz.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_has_smaller_signed_dist_to_planeC3(
|
||||
CGAL_to_exact_type<ET>(ppx.value),
|
||||
CGAL_to_exact_type<ET>(ppy.value),
|
||||
CGAL_to_exact_type<ET>(ppz.value),
|
||||
CGAL_to_exact_type<ET>(pqx.value),
|
||||
CGAL_to_exact_type<ET>(pqy.value),
|
||||
CGAL_to_exact_type<ET>(pqz.value),
|
||||
CGAL_to_exact_type<ET>(prx.value),
|
||||
CGAL_to_exact_type<ET>(pry.value),
|
||||
CGAL_to_exact_type<ET>(prz.value),
|
||||
CGAL_to_exact_type<ET>(px.value),
|
||||
CGAL_to_exact_type<ET>(py.value),
|
||||
CGAL_to_exact_type<ET>(pz.value),
|
||||
CGAL_to_exact_type<ET>(qx.value),
|
||||
CGAL_to_exact_type<ET>(qy.value),
|
||||
CGAL_to_exact_type<ET>(qz.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Sylvain: you can uncomment this whenever you're ready
|
||||
// #ifdef CGAL_FILTER_H
|
||||
// #include <CGAL/Filter/predicates_on_ftC3.h>
|
||||
// #endif
|
||||
|
||||
|
||||
#endif // CGAL_FILTER_PREDICATES_ON_FTC3_H
|
||||
|
|
@ -0,0 +1,333 @@
|
|||
// ======================================================================
|
||||
//
|
||||
// Copyright (c) 1998 The CGAL Consortium
|
||||
//
|
||||
// This software and related documentation is part of an INTERNAL release
|
||||
// of the Computational Geometry Algorithms Library (CGAL). It is not
|
||||
// intended for general use.
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
//
|
||||
// release :
|
||||
// release_date :
|
||||
//
|
||||
// source :
|
||||
// file : include/CGAL/Filter/predicates_on_rtH2.h
|
||||
// package : Interval_arithmetic
|
||||
// revision : 1.2.3
|
||||
// revision_date :
|
||||
// author(s) : Sylvain.Pion@sophia.inria.fr
|
||||
//
|
||||
// coordinator : MPI, Saarbruecken
|
||||
// ======================================================================
|
||||
|
||||
|
||||
#ifndef CGAL_FILTER_PREDICATES_ON_RTH2_H
|
||||
#define CGAL_FILTER_PREDICATES_ON_RTH2_H
|
||||
|
||||
// This file is automatically generated with the script for filtering
|
||||
// predicates, using Interval arithmetic.
|
||||
|
||||
#include <CGAL/Interval_arithmetic.h>
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
CGAL_Orientation
|
||||
CGAL_orientationH2( const CGAL_Filtering<CT,ET>& phx,
|
||||
const CGAL_Filtering<CT,ET>& phy,
|
||||
const CGAL_Filtering<CT,ET>& phw,
|
||||
const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Orientation result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_orientationH2(
|
||||
CGAL_to_Interval_nt_advanced(phx.value),
|
||||
CGAL_to_Interval_nt_advanced(phy.value),
|
||||
CGAL_to_Interval_nt_advanced(phw.value),
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_orientationH2(
|
||||
CGAL_to_exact_type<ET>(phx.value),
|
||||
CGAL_to_exact_type<ET>(phy.value),
|
||||
CGAL_to_exact_type<ET>(phw.value),
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
bool
|
||||
CGAL_leftturnH2( const CGAL_Filtering<CT,ET>& phx,
|
||||
const CGAL_Filtering<CT,ET>& phy,
|
||||
const CGAL_Filtering<CT,ET>& phw,
|
||||
const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_leftturnH2(
|
||||
CGAL_to_Interval_nt_advanced(phx.value),
|
||||
CGAL_to_Interval_nt_advanced(phy.value),
|
||||
CGAL_to_Interval_nt_advanced(phw.value),
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_leftturnH2(
|
||||
CGAL_to_exact_type<ET>(phx.value),
|
||||
CGAL_to_exact_type<ET>(phy.value),
|
||||
CGAL_to_exact_type<ET>(phw.value),
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
bool
|
||||
CGAL_rightturnH2(const CGAL_Filtering<CT,ET>& phx,
|
||||
const CGAL_Filtering<CT,ET>& phy,
|
||||
const CGAL_Filtering<CT,ET>& phw,
|
||||
const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_rightturnH2(
|
||||
CGAL_to_Interval_nt_advanced(phx.value),
|
||||
CGAL_to_Interval_nt_advanced(phy.value),
|
||||
CGAL_to_Interval_nt_advanced(phw.value),
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_rightturnH2(
|
||||
CGAL_to_exact_type<ET>(phx.value),
|
||||
CGAL_to_exact_type<ET>(phy.value),
|
||||
CGAL_to_exact_type<ET>(phw.value),
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
bool
|
||||
CGAL_collinearH2(const CGAL_Filtering<CT,ET>& phx,
|
||||
const CGAL_Filtering<CT,ET>& phy,
|
||||
const CGAL_Filtering<CT,ET>& phw,
|
||||
const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
bool result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_collinearH2(
|
||||
CGAL_to_Interval_nt_advanced(phx.value),
|
||||
CGAL_to_Interval_nt_advanced(phy.value),
|
||||
CGAL_to_Interval_nt_advanced(phw.value),
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_collinearH2(
|
||||
CGAL_to_exact_type<ET>(phx.value),
|
||||
CGAL_to_exact_type<ET>(phy.value),
|
||||
CGAL_to_exact_type<ET>(phw.value),
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
CGAL_Bounded_side
|
||||
CGAL_side_of_bounded_circleH2( const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw,
|
||||
const CGAL_Filtering<CT,ET>& shx,
|
||||
const CGAL_Filtering<CT,ET>& shy,
|
||||
const CGAL_Filtering<CT,ET>& shw,
|
||||
const CGAL_Filtering<CT,ET>& thx,
|
||||
const CGAL_Filtering<CT,ET>& thy,
|
||||
const CGAL_Filtering<CT,ET>& thw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Bounded_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_bounded_circleH2(
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value),
|
||||
CGAL_to_Interval_nt_advanced(shx.value),
|
||||
CGAL_to_Interval_nt_advanced(shy.value),
|
||||
CGAL_to_Interval_nt_advanced(shw.value),
|
||||
CGAL_to_Interval_nt_advanced(thx.value),
|
||||
CGAL_to_Interval_nt_advanced(thy.value),
|
||||
CGAL_to_Interval_nt_advanced(thw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_bounded_circleH2(
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value),
|
||||
CGAL_to_exact_type<ET>(shx.value),
|
||||
CGAL_to_exact_type<ET>(shy.value),
|
||||
CGAL_to_exact_type<ET>(shw.value),
|
||||
CGAL_to_exact_type<ET>(thx.value),
|
||||
CGAL_to_exact_type<ET>(thy.value),
|
||||
CGAL_to_exact_type<ET>(thw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template < class CT, class ET >
|
||||
// CGAL_KERNEL_MEDIUM_INLINE
|
||||
CGAL_Oriented_side
|
||||
CGAL_side_of_oriented_circleH2(const CGAL_Filtering<CT,ET>& qhx,
|
||||
const CGAL_Filtering<CT,ET>& qhy,
|
||||
const CGAL_Filtering<CT,ET>& qhw,
|
||||
const CGAL_Filtering<CT,ET>& rhx,
|
||||
const CGAL_Filtering<CT,ET>& rhy,
|
||||
const CGAL_Filtering<CT,ET>& rhw,
|
||||
const CGAL_Filtering<CT,ET>& shx,
|
||||
const CGAL_Filtering<CT,ET>& shy,
|
||||
const CGAL_Filtering<CT,ET>& shw,
|
||||
const CGAL_Filtering<CT,ET>& thx,
|
||||
const CGAL_Filtering<CT,ET>& thy,
|
||||
const CGAL_Filtering<CT,ET>& thw )
|
||||
{ // This is the default filter (specialization).
|
||||
|
||||
CGAL_Oriented_side result;
|
||||
CGAL_FPU_set_rounding_to_infinity();
|
||||
try
|
||||
{
|
||||
result = CGAL_side_of_oriented_circleH2(
|
||||
CGAL_to_Interval_nt_advanced(qhx.value),
|
||||
CGAL_to_Interval_nt_advanced(qhy.value),
|
||||
CGAL_to_Interval_nt_advanced(qhw.value),
|
||||
CGAL_to_Interval_nt_advanced(rhx.value),
|
||||
CGAL_to_Interval_nt_advanced(rhy.value),
|
||||
CGAL_to_Interval_nt_advanced(rhw.value),
|
||||
CGAL_to_Interval_nt_advanced(shx.value),
|
||||
CGAL_to_Interval_nt_advanced(shy.value),
|
||||
CGAL_to_Interval_nt_advanced(shw.value),
|
||||
CGAL_to_Interval_nt_advanced(thx.value),
|
||||
CGAL_to_Interval_nt_advanced(thy.value),
|
||||
CGAL_to_Interval_nt_advanced(thw.value));
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
}
|
||||
catch (CGAL_Interval_nt_advanced::unsafe_comparison)
|
||||
{
|
||||
CGAL_FPU_set_rounding_to_nearest();
|
||||
result = CGAL_side_of_oriented_circleH2(
|
||||
CGAL_to_exact_type<ET>(qhx.value),
|
||||
CGAL_to_exact_type<ET>(qhy.value),
|
||||
CGAL_to_exact_type<ET>(qhw.value),
|
||||
CGAL_to_exact_type<ET>(rhx.value),
|
||||
CGAL_to_exact_type<ET>(rhy.value),
|
||||
CGAL_to_exact_type<ET>(rhw.value),
|
||||
CGAL_to_exact_type<ET>(shx.value),
|
||||
CGAL_to_exact_type<ET>(shy.value),
|
||||
CGAL_to_exact_type<ET>(shw.value),
|
||||
CGAL_to_exact_type<ET>(thx.value),
|
||||
CGAL_to_exact_type<ET>(thy.value),
|
||||
CGAL_to_exact_type<ET>(thw.value));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#endif // CGAL_FILTER_PREDICATES_ON_RTH2_H
|
||||
Loading…
Reference in New Issue