iMSTK
Interactive Medical Simulation Toolkit
imstkSphCollisionHandling.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 "imstkCollisionHandling.h"
10 #include "imstkMacros.h"
11 
12 namespace imstk
13 {
14 class CollisionData;
15 class CollisionDetectionAlgorithm;
16 class SphObject;
17 
26 {
27 public:
28  SphCollisionHandling() = default;
29  virtual ~SphCollisionHandling() override = default;
30 
31  IMSTK_TYPE_NAME(SphCollisionHandling)
32 
33 public:
34  void setInputSphObject(std::shared_ptr<SphObject> sphObj);
35 
40  void setNumberOfIterations(int iterations) { this->m_iterations = iterations; }
41 
45  void setDetection(std::shared_ptr<CollisionDetectionAlgorithm> colDetect) { this->m_colDetect = colDetect; }
46 
50  void handle(
51  const std::vector<CollisionElement>& elementsA,
52  const std::vector<CollisionElement>& elementsB) override;
53 
54 protected:
58  void solve(Vec3d& pos, Vec3d& velocity, const Vec3d& penetrationVector);
59 
60 private:
61  std::shared_ptr<CollisionDetectionAlgorithm> m_colDetect = nullptr;
62  int m_iterations = 1;
63  double m_boundaryFriction = 0.0;
64 };
65 } // end namespace imstk
void solve(Vec3d &pos, Vec3d &velocity, const Vec3d &penetrationVector)
Solves positiona and corrects velocity of individual particle.
Compound Geometry.
void setDetection(std::shared_ptr< CollisionDetectionAlgorithm > colDetect)
Sets detection object for iteration handling+detection.
Base class for all collision handling classes.
The SphCollisionHandling consumes PointIndexDirection contact data to resolve positions and correct v...
void handle(const std::vector< CollisionElement > &elementsA, const std::vector< CollisionElement > &elementsB) override
Resolve SPH particle positions.
void setNumberOfIterations(int iterations)
How many times to resolve and correct position. This is useful when colliding with multiple objects o...