iMSTK
Interactive Medical Simulation Toolkit
imstkRigidObjectCollision.h
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #pragma once
8 
9 #include "imstkCollisionInteraction.h"
10 #include "imstkMacros.h"
11 
12 namespace imstk
13 {
14 class RigidObject2;
15 template<typename T, int N> class VecDataArray;
16 
25 {
26 public:
27  RigidObjectCollision(std::shared_ptr<RigidObject2> obj1, std::shared_ptr<CollidingObject> obj2, std::string cdType = "");
28  ~RigidObjectCollision() override = default;
29 
30  IMSTK_TYPE_NAME(RigidObjectCollision)
31 
32  void setBaumgarteStabilization(double stiffness);
33  const double getBeta() const;
34 
35  void setFriction(double frictionalCoefficient);
36  const double getFriction() const;
37 
41  void initGraphEdges(std::shared_ptr<TaskNode> source, std::shared_ptr<TaskNode> sink) override;
42 
43  void copyVertsToPrevious();
44 
45  void measureDisplacementFromPrevious();
46 
47  std::shared_ptr<VecDataArray<double, 3>> m_prevVertices;
48 
49 protected:
50  std::shared_ptr<TaskNode> m_copyVertToPrevNode = nullptr;
51  std::shared_ptr<TaskNode> m_computeDisplacementNode = nullptr;
52 };
53 } // namespace imstk
Compound Geometry.
Abstract class for defining collision interactions between objects.
void initGraphEdges()
Initializes the edges of the SceneObject&#39;s computational graph.