OGS
Triangle.cpp
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#include "Triangle.h"
5
6#include <Eigen/Core>
7
10#include "Point.h"
11
12namespace GeoLib
13{
14Triangle::Triangle(std::vector<Point*> const& pnt_vec, std::size_t pnt_a,
15 std::size_t pnt_b, std::size_t pnt_c)
16 : _pnts(pnt_vec), _pnt_ids({{pnt_a, pnt_b, pnt_c}})
17{
18 assert(!_pnts.empty());
19 assert(pnt_a < _pnts.size() && pnt_b < _pnts.size() &&
20 pnt_c < _pnts.size());
21}
22
23bool Triangle::containsPoint(MathLib::Point3d const& q, double eps) const
24{
25 GeoLib::Point const& a(*(_pnts[_pnt_ids[0]]));
26 GeoLib::Point const& b(*(_pnts[_pnt_ids[1]]));
27 GeoLib::Point const& c(*(_pnts[_pnt_ids[2]]));
28 return MathLib::isPointInTriangle(q, a, b, c, eps);
29}
30} // namespace GeoLib
bool containsPoint(MathLib::Point3d const &q, double eps=std::numeric_limits< float >::epsilon()) const
Definition Triangle.cpp:23
Triangle(std::vector< Point * > const &pnt_vec, std::size_t pnt_a, std::size_t pnt_b, std::size_t pnt_c)
Definition Triangle.cpp:14
std::array< std::size_t, 3 > _pnt_ids
position of pointers to the geometric points
Definition Triangle.h:65
std::vector< Point * > const & _pnts
a vector of pointers to points the triangle is based on
Definition Triangle.h:63
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)