8#ifndef model_ConvexHull_H_
9#define model_ConvexHull_H_
30 auto begin() const -> decltype(this->x.rbegin())
35 auto end() const -> decltype(this->x.rend())
47 template<
int dim,
typename T>
59 const T*
const t_in) :
60 std::array<double,dim>(p_in)
72 template <
int dim,
typename T>
76 static_assert(
"ConvexHull not implemented for thid dimension");
86 static constexpr int dim=2;
87 static constexpr double tol=FLT_EPSILON;
93 return (
A[0] - O[0]) * (
B[1] - O[1]) - (
A[1] - O[1]) * (
B[0] - O[0]);
103 for(
const auto& pt : *
this)
111 for (
const auto& pt : *
this)
113 while(H.size()>=2 && cross(H[H.size()-2], H[H.size()-1], pt)<=
tol)
122 const size_t lowerSize(H.size());
126 while(H.size()-lowerSize>=2 && cross(H[H.size()-2], H[H.size()-1], pt)<=
tol)
auto begin() const -> decltype(this->x.rbegin())
auto end() const -> decltype(this->x.rend())
initial point of the source segment B
function infiniteDisplacement syms Ax Ay Az Bx By Bz qx qy qz u L x y z real A
reverse_range< T > reverse_iterate(T &x)
static constexpr double tol
HullPointContainerType getPoints()
HullPoint< 2, T > HullPointType
std::vector< HullPointType > HullPointContainerType
HullPoint(const std::array< double, dim > &p_in, const T *const t_in)