Geogram  Version 1.9.1-rc
A programming library of geometric algorithms
predicates.h File Reference

Filtered exact predicates for restricted Voronoi diagrams. More...

Go to the source code of this file.

Namespaces

 GEO
 Global Vorpaline namespace.
 
 GEO::PCK
 PCK (Predicate Construction Kit) implements a set of geometric predicates. PCK uses arithmetic filters (Meyer and Pion), expansion arithmetics (Shewchuk) and simulation of simplicity (Edelsbrunner).
 

Enumerations

enum  GEO::PCK::SOSMode { SOS_ADDRESS , SOS_LEXICO }
 Mode for symbolic perturbations.
 

Functions

void GEO::PCK::set_SOS_mode (SOSMode m)
 Sets the current mode for handling symbolic perturbations (SOS for Simulation Of Simplicity). More...
 
SOSMode GEO::PCK::get_SOS_mode ()
 Gets the current mode for handling symbolic perturbations. More...
 
Sign GEO::PCK::side1_SOS (const double *p0, const double *p1, const double *q0, coord_index_t DIM)
 Computes the side of a point (given directly) relative to a bisector. More...
 
Sign GEO::PCK::side2_SOS (const double *p0, const double *p1, const double *p2, const double *q0, const double *q1, coord_index_t DIM)
 Computes the side of a point (given as the intersection between a segment and a bisector) relative to another bisector. More...
 
Sign GEO::PCK::side3_SOS (const double *p0, const double *p1, const double *p2, const double *p3, const double *q0, const double *q1, const double *q2, coord_index_t DIM)
 Computes the side of a point (given as the intersection between a facet and two bisectors) relative to another bisector. More...
 
Sign GEO::PCK::side3_3dlifted_SOS (const double *p0, const double *p1, const double *p2, const double *p3, double h0, double h1, double h2, double h3, const double *q0, const double *q1, const double *q2, bool SOS=true)
 Computes the side of a point (given as the intersection between a facet and two bisectors) relative to another bisector. More...
 
Sign GEO::PCK::side4_SOS (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4, const double *q0, const double *q1, const double *q2, const double *q3, coord_index_t DIM)
 Computes the side of a point (given as the intersection between a tetrahedron and three bisectors) relative to another bisector. More...
 
Sign GEO::PCK::side4_3d (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4)
 Computes the side of a point (given as the intersection between three bisectors) relative to another bisector. More...
 
Sign GEO::PCK::side4_3d_SOS (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4)
 Computes the side of a point (given as the intersection between three bisectors) relative to another bisector. More...
 
Sign GEO::PCK::in_sphere_3d_SOS (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4)
 Tests whether a 3d point is inside the circumscribed sphere of a 3d tetrahedron. More...
 
Sign GEO::PCK::in_circle_2d_SOS (const double *p0, const double *p1, const double *p2, const double *p3)
 Tests whether a 2d point is inside the circumscribed circle of a 3d triangle. More...
 
Sign GEO::PCK::in_circle_3d_SOS (const double *p0, const double *p1, const double *p2, const double *p3)
 Tests whether a 3d point is inside the circumscribed circle of a 3d triangle. More...
 
Sign GEO::PCK::in_circle_3dlifted_SOS (const double *p0, const double *p1, const double *p2, const double *p3, double h0, double h1, double h2, double h3, bool SOS=true)
 Tests whether a lifted 3d point is inside the circumscribed circle of a lifted 3d triangle. More...
 
Sign GEO::PCK::orient_2d (const double *p0, const double *p1, const double *p2)
 Computes the orientation predicate in 2d. More...
 
Sign GEO::PCK::orient_2d (const vec2 &p0, const vec2 &p1, const vec2 &p2)
 Computes the orientation predicate in 2d. More...
 
Sign GEO::PCK::orient_2dlifted_SOS (const double *p0, const double *p1, const double *p2, const double *p3, double h0, double h1, double h2, double h3)
 Computes the 3d orientation test with lifted points. More...
 
Sign GEO::PCK::orient_3d (const double *p0, const double *p1, const double *p2, const double *p3)
 Computes the orientation predicate in 3d. More...
 
Sign GEO::PCK::orient_3d (const vec3 &p0, const vec3 &p1, const vec3 &p2, const vec3 &p3)
 Computes the orientation predicate in 3d. More...
 
Sign GEO::PCK::orient_3dlifted (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4, double h0, double h1, double h2, double h3, double h4)
 Computes the 4d orientation test. More...
 
Sign GEO::PCK::orient_3dlifted_SOS (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4, double h0, double h1, double h2, double h3, double h4)
 Computes the 4d orientation test with symbolic perturbation. More...
 
Sign GEO::PCK::det_3d (const double *p0, const double *p1, const double *p2)
 Computes the sign of the determinant of a 3x3 matrix formed by three 3d points. More...
 
Sign GEO::PCK::det_4d (const double *p0, const double *p1, const double *p2, const double *p3)
 Computes the sign of the determinant of a 4x4 matrix formed by four 4d points. More...
 
Sign GEO::PCK::det_compare_4d (const double *p0, const double *p1, const double *p2, const double *p3, const double *p4)
 Computes the sign of the determinant of a 4x4 matrix formed by three 4d points and the difference of two 4d points. More...
 
bool GEO::PCK::aligned_3d (const double *p0, const double *p1, const double *p2)
 Tests whether three points are aligned. More...
 
Sign GEO::PCK::dot_3d (const double *p0, const double *p1, const double *p2)
 Computes the sign of the dot product between two vectors. More...
 
bool GEO::PCK::aligned_3d (const vec3 &p0, const vec3 &p1, const vec3 &p2)
 Tests whether three points are aligned. More...
 
Sign GEO::PCK::dot_3d (const vec3 &p0, const vec3 &p1, const vec3 &p2)
 Computes the sign of the dot product between two vectors. More...
 
Sign GEO::PCK::dot_compare_3d (const double *v0, const double *v1, const double *v2)
 Compares two dot products. More...
 
bool GEO::PCK::points_are_identical_2d (const double *p1, const double *p2)
 Tests whether two 2d points are identical. More...
 
bool GEO::PCK::points_are_identical_3d (const double *p1, const double *p2)
 Tests whether two 3d points are identical. More...
 
bool GEO::PCK::points_are_colinear_3d (const double *p1, const double *p2, const double *p3)
 Tests whether three 3d points are colinear. More...
 
Sign GEO::PCK::orient_3d_inexact (const double *p0, const double *p1, const double *p2, const double *p3)
 Computes the (approximate) orientation predicate in 3d. More...
 
void GEO::PCK::show_stats ()
 Displays some statistics about predicates, including the number of calls, the number of exact arithmetics calls, and the number of Simulation of Simplicity calls.
 
void GEO::PCK::initialize ()
 Needs to be called before using any predicate.
 
void GEO::PCK::terminate ()
 Needs to be called at the end of the program.
 

Detailed Description

Filtered exact predicates for restricted Voronoi diagrams.

Definition in file predicates.h.