OGS
GeometricBasics.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <cstddef>
7#include <limits>
8
9namespace MathLib
10{
11class Point3d;
12
18
31double orientation3d(MathLib::Point3d const& p,
32 MathLib::Point3d const& a,
33 MathLib::Point3d const& b,
34 MathLib::Point3d const& c);
35
41 MathLib::Point3d const& b,
42 MathLib::Point3d const& c,
43 MathLib::Point3d const& d);
44
50double calcTriangleArea(MathLib::Point3d const& a, MathLib::Point3d const& b,
51 MathLib::Point3d const& c);
52
71 MathLib::Point3d const& b, MathLib::Point3d const& c,
72 MathLib::Point3d const& d,
73 double eps = std::numeric_limits<double>::epsilon());
74
93 MathLib::Point3d const& p,
94 MathLib::Point3d const& a,
95 MathLib::Point3d const& b,
96 MathLib::Point3d const& c,
97 double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
98 double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon(),
100
119 MathLib::Point3d const& q, MathLib::Point3d const& a,
120 MathLib::Point3d const& b, MathLib::Point3d const& c,
121 double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
122 double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon());
123
143 MathLib::Point3d const& p, MathLib::Point3d const& a,
144 MathLib::Point3d const& b, MathLib::Point3d const& c,
145 double eps_pnt_out_of_plane = std::numeric_limits<float>::epsilon(),
146 double eps_pnt_out_of_tri = std::numeric_limits<float>::epsilon());
147
153MathLib::Point3d const& b, MathLib::Point3d const& c);
154
165bool dividedByPlane(const MathLib::Point3d& a, const MathLib::Point3d& b,
166 const MathLib::Point3d& c, const MathLib::Point3d& d);
167
169bool isCoplanar(const MathLib::Point3d& a, const MathLib::Point3d& b,
170 const MathLib::Point3d& c, const MathLib::Point3d& d);
171
172} // 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)