38 #ifndef HPP_FCL_DATA_TYPES_H 39 #define HPP_FCL_DATA_TYPES_H 42 #include <Eigen/Geometry> 44 #include <hpp/fcl/config.hh> 48 #ifdef HPP_FCL_HAS_OCTOMAP 49 #define OCTOMAP_VERSION_AT_LEAST(x, y, z) \ 50 (OCTOMAP_MAJOR_VERSION > x || \ 51 (OCTOMAP_MAJOR_VERSION >= x && \ 52 (OCTOMAP_MINOR_VERSION > y || \ 53 (OCTOMAP_MINOR_VERSION >= y && OCTOMAP_PATCH_VERSION >= z)))) 55 #define OCTOMAP_VERSION_AT_MOST(x, y, z) \ 56 (OCTOMAP_MAJOR_VERSION < x || \ 57 (OCTOMAP_MAJOR_VERSION <= x && \ 58 (OCTOMAP_MINOR_VERSION < y || \ 59 (OCTOMAP_MINOR_VERSION <= y && OCTOMAP_PATCH_VERSION <= z)))) 60 #endif // HPP_FCL_HAS_OCTOMAP 66 typedef Eigen::Matrix<FCL_REAL, 3, 1>
Vec3f;
67 typedef Eigen::Matrix<FCL_REAL, Eigen::Dynamic, 1>
VecXf;
68 typedef Eigen::Matrix<FCL_REAL, 3, 3>
Matrix3f;
69 typedef Eigen::Matrix<FCL_REAL, Eigen::Dynamic, 3>
Matrixx3f;
70 typedef Eigen::Matrix<Eigen::DenseIndex, Eigen::Dynamic, 3>
Matrixx3i;
71 typedef Eigen::Matrix<FCL_REAL, Eigen::Dynamic, Eigen::Dynamic>
MatrixXf;
105 Triangle(index_type
p1, index_type p2, index_type p3) {
set(
p1, p2, p3); }
108 inline void set(index_type
p1, index_type p2, index_type p3) {
115 inline index_type
operator[](index_type i)
const {
return vids[i]; }
117 inline index_type&
operator[](index_type i) {
return vids[i]; }
119 static inline size_type
size() {
return 3; }
122 return vids[0] == other.
vids[0] && vids[1] == other.
vids[1] &&
123 vids[2] == other.
vids[2];
145 inline void set(index_type p0, index_type
p1, index_type p2, index_type p3) {
153 inline index_type
operator[](index_type i)
const {
return vids[i]; }
155 inline index_type&
operator[](index_type i) {
return vids[i]; }
157 static inline size_type
size() {
return 4; }
160 return vids[0] == other.
vids[0] && vids[1] == other.
vids[1] &&
161 vids[2] == other.
vids[2] && vids[3] == other.
vids[3];
165 return !(*
this == other);
GJKConvergenceCriterionType
Wether the convergence criterion is scaled on the norm of the solution or not.
Eigen::Matrix< FCL_REAL, Eigen::Dynamic, Eigen::Dynamic > MatrixXf
index_type vids[3]
indices for each vertex of triangle
GJKVariant
Variant to use for the GJK algorithm.
bool operator!=(const Quadrilateral &other) const
Eigen::Matrix< FCL_REAL, Eigen::Dynamic, 1 > VecXf
Quadrilateral with 4 indices for points.
Eigen::Matrix< FCL_REAL, 3, 3 > Matrix3f
bool operator==(const Quadrilateral &other) const
bool operator!=(const Triangle &other) const
Quadrilateral(index_type p0, index_type p1, index_type p2, index_type p3)
Triangle()
Default constructor.
Eigen::Matrix< Eigen::DenseIndex, Eigen::Dynamic, 3 > Matrixx3i
GJKInitialGuess
Initial guess to use for the GJK algorithm DefaultGuess: Vec3f(1, 0, 0) CachedGuess: previous vector ...
index_type operator[](index_type i) const
the quadrilateral index
Eigen::Matrix< FCL_REAL, Eigen::Dynamic, 3 > Matrixx3f
Eigen::Vector2i support_func_guess_t
Triangle with 3 indices for points.
index_type & operator[](index_type i)
index_type operator[](index_type i) const
Access the triangle index.
Eigen::Matrix< FCL_REAL, 3, 1 > Vec3f
GJKConvergenceCriterion
Which convergence criterion is used to stop the algorithm (when the shapes are not in collision)...
Triangle(index_type p1, index_type p2, index_type p3)
Create a triangle with given vertex indices.
index_type & operator[](index_type i)
bool operator==(const Triangle &other) const