9 #include "imstkCollisionHandling.h" 10 #include "imstkMath.h" 11 #include "imstkMacros.h" 16 class CollidingObject;
45 std::shared_ptr<CollidingObject> getBoneObj()
const {
return getInputObjectA(); }
46 std::shared_ptr<RigidObject2> getDrillObj()
const;
72 const std::vector<CollisionElement>& elementsA,
73 const std::vector<CollisionElement>& elementsB)
override;
79 const std::vector<CollisionElement>& elementsA,
80 const std::vector<CollisionElement>& elementsB);
83 double m_stiffness = 10e-01;
84 double m_damping = 0.005;
86 double m_angularSpeed = 10 * PI;
87 double m_BoneHardness = 10;
89 std::vector<double> m_nodalDensity;
90 double m_initialBoneDensity = 1.0;
93 std::vector<bool> m_nodeRemovalStatus;
94 std::vector<std::vector<size_t>> m_nodalCardinalSet;
96 bool m_initialStep =
true;
void setInputObjectBone(std::shared_ptr< CollidingObject > boneObject)
Set the input bone.
void erodeBone(const std::vector< CollisionElement > &elementsA, const std::vector< CollisionElement > &elementsB)
Decrease the density at the nodal points and remove if the density goes below 0.
void setInputObjectA(std::shared_ptr< CollidingObject > objectA)
Set the input objects.
void setStiffness(const double k)
Set stiffness.
virtual void handle(const std::vector< CollisionElement > &elementsA, const std::vector< CollisionElement > &elementsB) override
Does the bone drilling.
void setInputObjectDrill(std::shared_ptr< RigidObject2 > drillObject)
Set the input drill.
std::shared_ptr< CollidingObject > getInputObjectA() const
Get the input objects.
Base class for all collision handling classes.
double getDamping() const
Get damping coefficient.
void setDamping(const double d)
Set damping coefficient.
double getStiffness() const
Get stiffness.
Implements bone drilling collision handling.