Drake
Element.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include <memory>
5 #include <utility>
6 
7 #include <Eigen/Dense>
8 #include <Eigen/StdVector>
9 
10 #include "Geometry.h"
11 #include "drake/drakeShapes_export.h"
12 
13 namespace DrakeShapes {
14 class DRAKESHAPES_EXPORT Element {
15  public:
16  Element(const Geometry& geometry, const Eigen::Isometry3d& T_element_to_local)
17  : T_element_to_world(Eigen::Isometry3d::Identity()),
18  T_element_to_local(T_element_to_local),
19  geometry(geometry.clone()) {}
20 
21  explicit Element(const Geometry& geometry)
22  : T_element_to_world(Eigen::Isometry3d::Identity()),
23  T_element_to_local(Eigen::Isometry3d::Identity()),
24  geometry(geometry.clone()) {}
25 
26  explicit Element(const Eigen::Isometry3d& T_element_to_local)
27  : T_element_to_world(Eigen::Isometry3d::Identity()),
28  T_element_to_local(T_element_to_local),
29  geometry() {}
30 
31  virtual ~Element() {}
32 
33  virtual Element* clone() const;
34 
35  const Eigen::Isometry3d& getWorldTransform() const;
36 
37  const Eigen::Isometry3d& getLocalTransform() const;
38 
39  void SetLocalTransform(const Eigen::Isometry3d& T_element_to_local);
40 
41  virtual void updateWorldTransform(const Eigen::Isometry3d& T_local_to_world);
42 
43  Shape getShape() const;
44 
45  void setGeometry(const Geometry& geometry);
46 
47  bool hasGeometry() const;
48 
49  const Geometry& getGeometry() const;
50 
51  void getTerrainContactPoints(Eigen::Matrix3Xd& points) const;
52 
53  protected:
54  virtual void setWorldTransform(const Eigen::Isometry3d& T_elem_to_world);
55  Eigen::Isometry3d T_element_to_world;
56  Eigen::Isometry3d T_element_to_local;
57  std::unique_ptr<Geometry> geometry;
58 
59  Element(const Element&);
60  Element& operator=(const Element&) { return *this; }
61 
62  public:
63  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
64 };
65 }
Definition: Element.cpp:5
virtual ~Element()
Definition: Element.h:31
Definition: Geometry.h:29
std::unique_ptr< Geometry > geometry
Definition: Element.h:57
Element & operator=(const Element &)
Definition: Element.h:60
Element(const Geometry &geometry)
Definition: Element.h:21
Element(const Geometry &geometry, const Eigen::Isometry3d &T_element_to_local)
Definition: Element.h:16
Eigen::Isometry3d T_element_to_world
Definition: Element.h:55
Definition: Element.h:14
Element(const Eigen::Isometry3d &T_element_to_local)
Definition: Element.h:26
Eigen::Isometry3d T_element_to_local
Definition: Element.h:56