48 #ifndef CGAL_PREDICATES_KERNEL_FTC2_H
49 #define CGAL_PREDICATES_KERNEL_FTC2_H
61 const FT &l2a,
const FT &l2b,
const FT &l2c)
77 const FT &la,
const FT &lb,
const FT &lc,
78 const FT &ha,
const FT &hb,
const FT &hc)
92 const FT &h1a,
const FT &h1b,
const FT &h1c,
93 const FT &h2a,
const FT &h2b,
const FT &h2c)
115 template <
class FT >
119 const FT &h1a,
const FT &h1b,
const FT &h1c,
120 const FT &l2a,
const FT &l2b,
const FT &l2c,
121 const FT &h2a,
const FT &h2b,
const FT &h2c)
133 template <
class FT >
137 const FT &la,
const FT &lb,
const FT &lc)
144 template <
class FT >
148 const FT &l1a,
const FT &l1b,
const FT &l1c,
149 const FT &l2a,
const FT &l2b,
const FT &l2c)
157 template <
class FT >
161 const FT &l2a,
const FT &l2b,
const FT &l2c,
162 const FT &ha,
const FT &hb,
const FT &hc)
172 template <
class FT >
176 const FT &l2a,
const FT &l2b,
const FT &l2c,
177 const FT &h1a,
const FT &h1b,
const FT &h1c,
178 const FT &h2a,
const FT &h2b,
const FT &h2c)
186 h1a*num+h1c*den, h1b));
189 template <
class FT >
193 const FT &dx2,
const FT &dy2)
200 template <
class FT >
205 const FT &dx2,
const FT &dy2)
209 int quadrant_1 = (dx1 >= FT(0)) ? ((dy1 >= FT(0))?1:4)
210 : ((dy1 >= FT(0))?2:3);
211 int quadrant_2 = (dx2 >= FT(0)) ? ((dy2 >= FT(0))?1:4)
212 : ((dy2 >= FT(0))?2:3);
215 if (quadrant_1 > quadrant_2)
217 else if (quadrant_1 < quadrant_2)
222 template <
class FT >
226 const FT &ry,
const FT &sy)
231 template <
class FT >
236 const FT &qx,
const FT &qy)
242 template <
class FT >
246 const FT &qx,
const FT &qy,
247 const FT &rx,
const FT &ry)
253 template <
class FT >
258 const FT &qx,
const FT &qy,
259 const FT &rx,
const FT &ry)
261 if (px < qx)
return !(rx < qx);
262 if (qx < px)
return !(qx < rx);
263 if (py < qy)
return !(ry < qy);
264 if (qy < py)
return !(qy < ry);
268 template <
class FT >
273 const FT &qx,
const FT &qy,
274 const FT &rx,
const FT &ry)
276 if (px < qx)
return (qx < rx);
277 if (qx < px)
return (rx < qx);
278 if (py < qy)
return (qy < ry);
279 if (qy < py)
return (ry < qy);
283 template <
class FT >
287 const FT &qx,
const FT &qy,
288 const FT &rx,
const FT &ry,
289 const FT &tx,
const FT &ty)
308 ptx*qty - pty*qtx, qtx*(qx-px) + qty*(qy-py),
309 ptx*rty - pty*rtx, rtx*(rx-px) + rty*(ry-py)));
312 template <
class FT >
316 const FT &qx,
const FT &qy,
317 const FT &rx,
const FT &ry,
318 const FT &tx,
const FT &ty)
326 template <
class FT >
330 const FT &qx,
const FT &qy,
331 const FT &rx,
const FT &ry)
337 template <
class FT >
342 const FT &qx,
const FT &qy,
343 const FT &rx,
const FT &ry)
348 template <
class FT >
353 const FT &qx,
const FT &qy,
354 const FT &rx,
const FT &ry)
359 template <
class FT >
363 const FT &px,
const FT &py,
364 const FT &qx,
const FT &qy)
370 template <
class FT >
375 const FT &px,
const FT &py,
376 const FT &qx,
const FT &qy)
381 template <
class FT >
386 const FT &px,
const FT &py,
387 const FT &qx,
const FT &qy)
396 const FT &qx,
const FT &qy,
397 const FT &rx,
const FT &ry,
398 const FT &sx,
const FT &sy)
409 const FT &qx,
const FT &qy,
410 const FT &rx,
const FT &ry,
411 const FT &sx,
const FT &sy)
421 const FT &qx,
const FT &qy,
422 const FT &rx,
const FT &ry,
423 const FT &sx,
const FT &sy)
432 const FT &
x,
const FT &
y)
439 #ifdef CGAL_ARITHMETIC_FILTER_H
440 #include <CGAL/Arithmetic_filter/predicates/kernel_ftC2.h>
443 #endif // CGAL_PREDICATES_KERNEL_FTC2_H
CGAL_BEGIN_NAMESPACE FT det2x2_by_formula(const FT &a00, const FT &a01, const FT &a10, const FT &a11)
static SURF_BEGIN_NAMESPACE double sign(double x)
Sign sign_of_determinant3x3(const FT &a00, const FT &a01, const FT &a02, const FT &a10, const FT &a11, const FT &a12, const FT &a20, const FT &a21, const FT &a22)
CGAL_KERNEL_MEDIUM_INLINE bool collinear_are_strictly_ordered_along_lineC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
void int int REAL REAL * y
bool has_larger_dist_to_pointC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
CGAL_BEGIN_NAMESPACE Sign sign_of_determinant2x2(const FT &a00, const FT &a01, const FT &a10, const FT &a11)
Orientation orientationC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
CGAL_KERNEL_INLINE FT squared_distanceC2(const FT &px, const FT &py, const FT &qx, const FT &qy)
Comparison_result compare_deltax_deltayC2(const FT &px, const FT &qx, const FT &ry, const FT &sy)
bool has_smaller_dist_to_pointC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
#define CGAL_KERNEL_MEDIUM_INLINE
Comparison_result cmp_signed_dist_to_directionC2(const FT &la, const FT &lb, const FT &px, const FT &py, const FT &qx, const FT &qy)
CGAL_KERNEL_MEDIUM_INLINE Comparison_result compare_angle_with_x_axisC2(const FT &dx1, const FT &dy1, const FT &dx2, const FT &dy2)
bool has_larger_signed_dist_to_lineC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry, const FT &sx, const FT &sy)
CGAL_BEGIN_NAMESPACE CGAL_KERNEL_MEDIUM_INLINE bool equal_lineC2(const FT &l1a, const FT &l1b, const FT &l1c, const FT &l2a, const FT &l2b, const FT &l2c)
Comparison_result compare_lexicographically_xyC2(const FT &px, const FT &py, const FT &qx, const FT &qy)
CGAL_KERNEL_MEDIUM_INLINE Comparison_result compare_y_at_xC2(const FT &px, const FT &py, const FT &la, const FT &lb, const FT &lc)
Oriented_side side_of_oriented_lineC2(const FT &a, const FT &b, const FT &c, const FT &x, const FT &y)
#define CGAL_KERNEL_LARGE_INLINE
CGAL_KERNEL_LARGE_INLINE Bounded_side side_of_bounded_circleC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry, const FT &tx, const FT &ty)
Comparison_result cmp_dist_to_pointC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
Comparison_result cmp_signed_dist_to_lineC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry, const FT &sx, const FT &sy)
bool has_larger_signed_dist_to_directionC2(const FT &la, const FT &lb, const FT &px, const FT &py, const FT &qx, const FT &qy)
CGAL_KERNEL_INLINE FT scaled_distance_to_directionC2(const FT &la, const FT &lb, const FT &px, const FT &py)
CGAL_KERNEL_LARGE_INLINE Oriented_side side_of_oriented_circleC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry, const FT &tx, const FT &ty)
CGAL_KERNEL_MEDIUM_INLINE bool equal_directionC2(const FT &dx1, const FT &dy1, const FT &dx2, const FT &dy2)
CGAL_KERNEL_MEDIUM_INLINE Comparison_result compare_xC2(const FT &px, const FT &la, const FT &lb, const FT &lc, const FT &ha, const FT &hb, const FT &hc)
bool has_smaller_signed_dist_to_directionC2(const FT &la, const FT &lb, const FT &px, const FT &py, const FT &qx, const FT &qy)
#define CGAL_BEGIN_NAMESPACE
CGAL_KERNEL_INLINE Comparison_result compare(const NT &n1, const NT &n2)
bool has_smaller_signed_dist_to_lineC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry, const FT &sx, const FT &sy)
#define CGAL_kernel_assertion(EX)
#define CGAL_END_NAMESPACE
CGAL_KERNEL_MEDIUM_INLINE bool collinear_are_ordered_along_lineC2(const FT &px, const FT &py, const FT &qx, const FT &qy, const FT &rx, const FT &ry)
CGAL_KERNEL_INLINE FT scaled_distance_to_lineC2(const FT &la, const FT &lb, const FT &lc, const FT &px, const FT &py)