OGS
GeometricBasics.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <cstddef>
13 #include <limits>
14 
15 namespace MathLib
16 {
17 
18 template <typename T, std::size_t DIM> class TemplatePoint;
20 
22 {
24 };
25 
38 double orientation3d(MathLib::Point3d const& p,
39  MathLib::Point3d const& a,
40  MathLib::Point3d const& b,
41  MathLib::Point3d const& c);
42 
48  MathLib::Point3d const& b,
49  MathLib::Point3d const& c,
50  MathLib::Point3d const& d);
51 
57 double calcTriangleArea(MathLib::Point3d const& a, MathLib::Point3d const& b,
58  MathLib::Point3d const& c);
59 
78  MathLib::Point3d const& b, MathLib::Point3d const& c,
79  MathLib::Point3d const& d,
80  double eps = std::numeric_limits<double>::epsilon());
81 
100  MathLib::Point3d const& p,
101  MathLib::Point3d const& a,
102  MathLib::Point3d const& b,
103  MathLib::Point3d const& c,
104  double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
105  double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon(),
107 
126  MathLib::Point3d const& q, MathLib::Point3d const& a,
127  MathLib::Point3d const& b, MathLib::Point3d const& c,
128  double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
129  double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon());
130 
150  MathLib::Point3d const& p, MathLib::Point3d const& a,
151  MathLib::Point3d const& b, MathLib::Point3d const& c,
152  double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
153  double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon());
154 
160 MathLib::Point3d const& b, MathLib::Point3d const& c);
161 
172 bool dividedByPlane(const MathLib::Point3d& a, const MathLib::Point3d& b,
173  const MathLib::Point3d& c, const MathLib::Point3d& d);
174 
176 bool isCoplanar(const MathLib::Point3d& a, const MathLib::Point3d& b,
177  const MathLib::Point3d& c, const MathLib::Point3d& d);
178 
179 } // end namespace MathLib
static const double q
double orientation3d(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c)
bool gaussPointInTriangle(MathLib::Point3d const &q, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, double eps_pnt_out_of_plane, double eps_pnt_out_of_tri)
double calcTriangleArea(MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c)
bool isCoplanar(const MathLib::Point3d &a, const MathLib::Point3d &b, const MathLib::Point3d &c, const MathLib::Point3d &d)
Checks if the four given points are located on a plane.
static const double p
bool dividedByPlane(const MathLib::Point3d &a, const MathLib::Point3d &b, const MathLib::Point3d &c, const MathLib::Point3d &d)
bool isPointInTriangle(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, double eps_pnt_out_of_plane, double eps_pnt_out_of_tri, MathLib::TriangleTest algorithm)
bool barycentricPointInTriangle(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, double eps_pnt_out_of_plane, double eps_pnt_out_of_tri)
double calcTetrahedronVolume(MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, MathLib::Point3d const &d)
bool isPointInTetrahedron(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, MathLib::Point3d const &d, double eps)
bool isPointInTriangleXY(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c)