Geogram Version 1.8.5
A programming library of geometric algorithms
Loading...
Searching...
No Matches
exact_geometry.h File Reference

Exact predicates and constructs. More...

Go to the source code of this file.

Classes

struct  GEO::vec2HE
 2D vector in homogeneous coordinates with coordinates as arithmetic expansions More...
 
struct  GEO::vec3HE
 3D vector in homogeneous coordinates with coordinates as arithmetic expansions. More...
 
class  GEO::vec2HELexicoCompare
 Comparator class for vec3HE \detail Used to create maps indexed by vec3HE. More...
 
class  GEO::vec3HELexicoCompare
 Comparator class for vec3HE \detail Used to create maps indexed by vec3HE. More...
 
class  GEO::vec3HEProjectedLexicoCompare
 Comparator class for projected vec3HE. More...
 

Namespaces

namespace  GEO
 Global Vorpaline namespace.
 
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).
 

Typedefs

typedef vecng< 2, expansion_ntGEO::vec2E
 vec2 with coordinates as expansions
 
typedef vecng< 3, expansion_ntGEO::vec3E
 vec3 with coordinates as expansions
 

Functions

vec2HE GEO::operator- (const vec2HE &p1, const vec2HE &p2)
 
vec3HE GEO::operator- (const vec3HE &p1, const vec3HE &p2)
 
vec3HE GEO::mix (const rational_nt &t, const vec3 &p1, const vec3 &p2)
 
vec2HE GEO::mix (const rational_nt &t, const vec2HE &p1, const vec2HE &p2)
 
vec3HE GEO::mix (const rational_nt &t, const vec3HE &p1, const vec3HE &p2)
 
template<>
expansion_nt GEO::det (const vec2E &v1, const vec2E &v2)
 Specialization optimized using low-level API.
 
template<>
expansion_nt GEO::dot (const vec2E &v1, const vec2E &v2)
 Specialization optimized using low-level API.
 
template<>
expansion_nt GEO::dot (const vec3E &v1, const vec3E &v2)
 Specialization optimized using low-level API.
 
template<class T >
bool GEO::PCK::same_point (const vecng< 3, T > &v1, const vecng< 3, T > &v2)
 
template<class T >
bool GEO::PCK::same_point (const vecng< 2, T > &v1, const vecng< 2, T > &v2)
 
bool GEO::PCK::same_point (const vec2HE &v1, const vec2HE &v2)
 
bool GEO::PCK::same_point (const vec3HE &v1, const vec3HE &v2)
 
Sign GEO::PCK::orient_2d (const vec2HE &p0, const vec2HE &p1, const vec2HE &p2)
 
Sign GEO::PCK::orient_2d_projected (const vec3HE &p0, const vec3HE &p1, const vec3HE &p2, coord_index_t axis)
 
Sign GEO::PCK::orient_3d (const vec3HE &p0, const vec3HE &p1, const vec3HE &p2, const vec3HE &p3)
 
Sign GEO::PCK::dot_2d (const vec2HE &p0, const vec2HE &p1, const vec2HE &p2)
 
Sign GEO::PCK::orient_2dlifted_SOS (const vec2HE &p0, const vec2HE &p1, const vec2HE &p2, const vec2HE &p3, double h0, double h1, double h2, double h3)
 Computes the 3d orientation test with lifted points.
 
Sign GEO::PCK::orient_2dlifted_SOS_projected (const vec3HE &p0, const vec3HE &p1, const vec3HE &p2, const vec3HE &p3, double h0, double h1, double h2, double h3, coord_index_t axis)
 
template<class VEC3 >
VEC3 GEO::make_vec3 (const vec3 &p)
 Converts a 3d vector with double coordinates into a 3d vector with coordinates of arbitrary type.
 
template<class VEC3 = vec3>
VEC3 GEO::make_vec3 (const vec3 &p1, const vec3 &p2)
 Creates a vector with coordinates of arbitrary type from two points with double coordinates.
 
template<>
vec3E GEO::make_vec3< vec3E > (const vec3 &p1, const vec3 &p2)
 Specialization for vec3E.
 
template<class VEC2 >
VEC2 GEO::make_vec2 (const vec2 &p1, const vec2 &p2)
 Creates a vector with coordinates of arbitrary type from two points with double coordinates.
 
template<>
vec2E GEO::make_vec2< vec2E > (const vec2 &p1, const vec2 &p2)
 Specialization for vec2E.
 
template<class VEC3 >
VEC3 GEO::triangle_normal (const vec3 &p1, const vec3 &p2, const vec3 &p3)
 Computes the normal to a triangle from its three vertices.
 
template<>
vec3E GEO::triangle_normal< vec3E > (const vec3 &p1, const vec3 &p2, const vec3 &p3)
 Specialization for vec3E.
 
bool GEO::get_three_planes_intersection (vec3HE &result, const vec3 &p1, const vec3 &p2, const vec3 &p3, const vec3 &q1, const vec3 &q2, const vec3 &q3, const vec3 &r1, const vec3 &r2, const vec3 &r3)
 Computes the exact intersection between the support planes of three triangles.
 
vec3HE GEO::plane_line_intersection (const vec3 &p1, const vec3 &p2, const vec3 &p3, const vec3 &q1, const vec3 &q2)
 Computes the exact intersection between the support plane of a triangle and the support line of a segment.
 
coord_index_t GEO::triangle_normal_axis_exact (const vec3 &p1, const vec3 &p2, const vec3 &p3)
 Finds an axis along which a triangle can be projected without degeneracy.
 

Detailed Description

Exact predicates and constructs.

Implements vector types with expansion coordinates (vec2E, vec3E), vector types with homogeneous expansion coordinates (vec2HE, vec3HE), 2d orientation predicate, 3d-lifted orientation predicate (can be used to implement incircle), and constructions for intersections.

Definition in file exact_geometry.h.