19 #ifndef HPP_AFFORDANCE_OPERATIONS_HH 20 #define HPP_AFFORDANCE_OPERATIONS_HH 22 #include <hpp/fcl/data_types.h> 25 namespace affordance {
54 const double nbTriMargin = 0.3,
55 const double minArea = 0.05,
56 const char* affordanceName =
"noAffordance")
66 virtual bool requirement(
const fcl::Vec3f& normal) = 0;
94 const double nbTriMargin = 0.3,
95 const double minArea = 0.05,
96 const char* affordanceName =
"Support")
97 :
OperationBase(margin, nbTriMargin, minArea, affordanceName) {}
118 const double nbTriMargin = 0.3,
119 const double minArea = 0.05,
120 const char* affordanceName =
"Lean")
121 :
OperationBase(margin, nbTriMargin, minArea, affordanceName) {}
143 const double nbTriMargin = 0.3,
144 const double minArea = 0.05,
145 const char* affordanceName =
"Support45")
147 axis45_(fcl::Vec3f(1. / sqrt(2.), 0, 1. / sqrt(2.))) {}
150 const fcl::Vec3f axis45_;
156 bool requirement(
const fcl::Vec3f& normal) {
157 fcl::Vec3f projectedNormal(0, 0, normal[2]);
158 projectedNormal[0] = sqrt(normal[0] * normal[0] + normal[1] * normal[1]);
159 return ((axis45_ - projectedNormal).squaredNorm() <
margin_);
167 #endif // HPP_AFFORDANCE_OPERATIONS_HH const fcl::Vec3f zWorld_
Definition: operations.hh:69
const double minArea_
Definition: operations.hh:77
Support45Operation(const double margin=0.3, const double nbTriMargin=0.3, const double minArea=0.05, const char *affordanceName="Support45")
Definition: operations.hh:142
Definition: affordance-extraction.hh:25
Definition: operations.hh:32
Definition: operations.hh:132
const double margin_
The error margin within which the requirement function must be fullfilled.
Definition: operations.hh:71
OperationBase()
Definition: operations.hh:38
bool requirement(const fcl::Vec3f &normal)
Definition: operations.hh:125
bool requirement(const fcl::Vec3f &normal)
Definition: operations.hh:101
Definition: operations.hh:83
Definition: operations.hh:107
SupportOperation(const double margin=0.3, const double nbTriMargin=0.3, const double minArea=0.05, const char *affordanceName="Support")
Definition: operations.hh:93
const char * affordance_
Name of the affordance type for which te requirement exists.
Definition: operations.hh:79
const double neighbouringTriangleMargin_
Definition: operations.hh:74
LeanOperation(const double margin=0.3, const double nbTriMargin=0.3, const double minArea=0.05, const char *affordanceName="Lean")
Definition: operations.hh:117
virtual bool requirement(const fcl::Vec3f &normal)=0
OperationBase(const double margin=0.3, const double nbTriMargin=0.3, const double minArea=0.05, const char *affordanceName="noAffordance")
Definition: operations.hh:53