16 #ifndef SURGSIM_PHYSICS_MASSSPRINGMODEL_H 17 #define SURGSIM_PHYSICS_MASSSPRINGMODEL_H 21 #include "SurgSim/DataStructures/OptionalValue.h" 22 #include "SurgSim/DataStructures/Vertices.h" 23 #include "SurgSim/Framework/Asset.h" 24 #include "SurgSim/Math/OdeState.h" 25 #include "SurgSim/Physics/Mass.h" 34 SURGSIM_STATIC_REGISTRATION(MassSpringModel);
38 public std::enable_shared_from_this<MassSpringModel>
50 void addMass(
const std::shared_ptr<Mass> mass);
54 void addSpring(
const std::shared_ptr<Spring> spring);
65 const std::vector<std::shared_ptr<Mass>>&
getMasses()
const;
72 const std::vector<std::shared_ptr<Spring>>&
getSprings()
const;
78 const std::shared_ptr<Mass>&
getMass(
size_t nodeId)
const;
84 const std::shared_ptr<Spring>&
getSpring(
size_t springId)
const;
107 size_t addElement(
const std::vector<size_t>& nodeIds);
112 const std::vector<size_t>&
getNodeIds(
size_t index)
const;
134 bool save(
const std::string& fileName,
double physicsLength = 0.0)
const;
137 bool doLoad(
const std::string& filePath)
override;
161 #endif // SURGSIM_PHYSICS_MASSSPRINGMODEL_H Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
This class is used to facilitate file loading.
Definition: Asset.h:39
DataStructures::OptionalValue< double > m_thickness
The thickness, if any.
Definition: MassSpringModel.h:155
size_t getNumNodesPerElement() const
Definition: MassSpringModel.cpp:117
size_t addElement(const std::vector< size_t > &nodeIds)
Stores an element's node ids, e.g., for a 2d shape this may store triangle nodes. ...
Definition: MassSpringModel.cpp:98
const std::vector< size_t > & getBoundaryConditions() const
Gets entire vector of boundary conditions.
Definition: MassSpringModel.cpp:83
size_t getNumElements() const
Definition: MassSpringModel.cpp:112
const std::shared_ptr< Mass > & getMass(size_t nodeId) const
Retrieves the mass of a given node.
Definition: MassSpringModel.cpp:65
size_t addBoundaryCondition(size_t boundaryCondition)
Add boundary condition to mesh.
Definition: MassSpringModel.cpp:77
std::vector< std::shared_ptr< Spring > > m_springs
Springs.
Definition: MassSpringModel.h:143
const std::shared_ptr< Spring > & getSpring(size_t springId) const
Retrieves a given spring from its id.
Definition: MassSpringModel.cpp:71
std::vector< std::shared_ptr< Mass > > m_masses
Masses.
Definition: MassSpringModel.h:140
void setThickness(double thickness)
Definition: MassSpringModel.cpp:134
const std::vector< std::shared_ptr< Mass > > & getMasses() const
Retrieves the masses.
Definition: MassSpringModel.cpp:55
MassSpringModel()
Default constructor.
Definition: MassSpringModel.cpp:31
Base class for a data structure for holding MassSpring mesh data.
Definition: MassSpringModel.h:37
void addSpring(const std::shared_ptr< Spring > spring)
Adds a spring, and sets its rest length.
Definition: MassSpringModel.cpp:40
const DataStructures::OptionalValue< double > & getRadius() const
Definition: MassSpringModel.cpp:129
void setRadius(double radius)
Definition: MassSpringModel.cpp:124
size_t getNumSprings() const
Gets the number of springs.
Definition: MassSpringModel.cpp:50
std::vector< std::vector< size_t > > m_nodeIds
The node ids for each element, e.g., for triangles it contains the three node ids for each triangle...
Definition: MassSpringModel.h:149
bool doLoad(const std::string &filePath) override
Derived classes will overwrite this method to do actual loading.
Definition: MassSpringModel.cpp:268
const std::vector< size_t > & getNodeIds(size_t index) const
Get an element's node ids.
Definition: MassSpringModel.cpp:107
size_t getBoundaryCondition(size_t id) const
Retrieves a specific boundary condition.
Definition: MassSpringModel.cpp:93
const std::vector< std::shared_ptr< Spring > > & getSprings() const
Retrieves a given spring from its id.
Definition: MassSpringModel.cpp:60
size_t getNumMasses() const
Gets the number of masses.
Definition: MassSpringModel.cpp:45
std::vector< size_t > m_boundaryConditions
Vector of vertex ids that have boundary conditions.
Definition: MassSpringModel.h:146
DataStructures::OptionalValue< double > m_radius
The radius, if any.
Definition: MassSpringModel.h:152
bool save(const std::string &fileName, double physicsLength=0.0) const
Save the current MassSpring mesh to a ply file.
Definition: MassSpringModel.cpp:144
void addMass(const std::shared_ptr< Mass > mass)
Adds a mass.
Definition: MassSpringModel.cpp:35
Base class for mesh structures, handling basic vertex functionality.
Definition: Vertices.h:51
const DataStructures::OptionalValue< double > & getThickness() const
Definition: MassSpringModel.cpp:139