Geogram Version 1.8.5
A programming library of geometric algorithms
|
Exact predicates and constructs. More...
#include <geogram/basic/common.h>
#include <geogram/basic/geometry.h>
#include <geogram/numerics/expansion_nt.h>
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_nt > | GEO::vec2E |
vec2 with coordinates as expansions | |
typedef vecng< 3, expansion_nt > | GEO::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. | |
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.