libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
geometricForm.hpp
1 #ifndef GEOMETRICFORM_H
2 #define GEOMETRICFORM_H
3 
4 #include "P3d-pkg.h"
5 //#include "API/Device/robot.hpp"
6 #include "Graphic-pkg.h"
7 #include "Logging/Logger.h"
8 
9 
10 
12 {
13  MOVE3D_STATIC_LOGGER;
14 public:
15  GeometricForm() {}
16 
20  virtual bool isPointInForm(p3d_point p) = 0;
21 
26  virtual double distHToPoint(p3d_point p) = 0;
27 
31  virtual double getDistanceFromPoint(p3d_point p) = 0;
32 
36  virtual double getPlannarDistanceFromPoint(p3d_point p) = 0;
37 
41  virtual p3d_point getRandomPointInForm() = 0;
42 
46  virtual std::vector<p3d_point> getFormGrid(double sampleRate) = 0;
47 
51  virtual GeometricForm* getTransformedForm(p3d_matrix4 M) = 0;
52 
53 
57  virtual void draw() = 0;
58 
59 
60 
66  p3d_point transformPoint(p3d_point a, p3d_matrix4 M);
67 
76  void transformVector(p3d_vector3 src, p3d_matrix4 M, p3d_vector3 res);
77 
81  void getNorm(p3d_vector3 v){p3d_vectCopy(_norm,v);}
82 
83 
87  std::string type;
88 
92  bool isSupport;
93 
97  std::map<std::string,GeometricForm*> supportAreas;
98 
99 protected:
100 
104  p3d_vector3 _norm;
105 
106 };
107 
108 #endif // GEOMETRICFORM_H
std::string type
the type of the form
Definition: geometricForm.hpp:87
Definition: geometricForm.hpp:11
virtual double distHToPoint(p3d_point p)=0
p3d_vector3 _norm
the form normal
Definition: geometricForm.hpp:104
void transformVector(p3d_vector3 src, p3d_matrix4 M, p3d_vector3 res)
transformVector: applies the transformation to the vector
Definition: geometricForm.cpp:24
virtual double getPlannarDistanceFromPoint(p3d_point p)=0
virtual std::vector< p3d_point > getFormGrid(double sampleRate)=0
void getNorm(p3d_vector3 v)
Definition: geometricForm.hpp:81
std::map< std::string, GeometricForm * > supportAreas
a map of internal geometric form
Definition: geometricForm.hpp:97
virtual GeometricForm * getTransformedForm(p3d_matrix4 M)=0
create a new form rotate by M compared to this one.
This file implements macros to help with the logging, in a way similar to ROS, using log4cxx...
virtual void draw()=0
draw the form
virtual bool isPointInForm(p3d_point p)=0
bool isSupport
is the form a support or not
Definition: geometricForm.hpp:92
virtual double getDistanceFromPoint(p3d_point p)=0
p3d_point transformPoint(p3d_point a, p3d_matrix4 M)
transformPoint
Definition: geometricForm.cpp:9
virtual p3d_point getRandomPointInForm()=0