Program listing for file mechanics/src/collision/RigidBody2dDS.hpp

Program listing for file mechanics/src/collision/RigidBody2dDS.hpp#

 1#ifndef RigidBody2dDS_h
 2#define RigidBody2dDS_h
 3
 4#include <MechanicsFwd.hpp>
 5#include <LagrangianLinearTIDS.hpp>
 6#include <SiconosVisitor.hpp>
 7#include <SiconosContactor.hpp>
 8
 9class RigidBody2dDS : public LagrangianLinearTIDS,
10                      public std::enable_shared_from_this<RigidBody2dDS>
11{
12protected:
13  ACCEPT_SERIALIZATION(RigidBody2dDS);
14
15  RigidBody2dDS() : LagrangianLinearTIDS() {};
16
17
18  double _scalarMass;
19
20  SP::SiconosContactorSet _contactors;
21  bool _useContactorInertia;
22
23
24  bool _allowSelfCollide = true;
25
26public:
27
28  RigidBody2dDS(SP::SiconosVector position,
29                SP::SiconosVector velocity,
30                SP::SiconosMatrix mass = SP::SimpleMatrix());
31
32  RigidBody2dDS(SP::SiconosVector position,
33            SP::SiconosVector velocity,
34            double mass,
35            double inertia);
36
37  virtual ~RigidBody2dDS();
38
39  double scalarMass()
40  {
41    return _scalarMass;
42  };
43
44
45  void setUseContactorInertia(bool use) { _useContactorInertia = use; }
46
47  bool useContactorInertia() { return _useContactorInertia; }
48
49
50  bool allowSelfCollide() { return _allowSelfCollide; }
51
52
53  void setAllowSelfCollide(bool x) { _allowSelfCollide = x; }
54
55
56  SP::SiconosContactorSet contactors() const { return _contactors; }
57
58
59  void setContactors(SP::SiconosContactorSet c) { _contactors = c; }
60
61
62  virtual SP::SiconosVector base_position() { return q(); }
63
64  ACCEPT_BASE_VISITORS(LagrangianLinearTIDS);
65
66};
67
68#endif