Program listing for file mechanics/src/collision/RigidBody2dDS.hpp#
Return to documentation for this file
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