iMSTK
Interactive Medical Simulation Toolkit
imstkImplicitGeometryToPointSetCD.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 "imstkCollisionDetectionAlgorithm.h"
10 #include "imstkImplicitFunctionFiniteDifferenceFunctor.h"
11 #include "imstkMacros.h"
12 
13 namespace imstk
14 {
22 {
23 public:
25  ~ImplicitGeometryToPointSetCD() override = default;
26 
27  IMSTK_TYPE_NAME(ImplicitGeometryToPointSetCD)
28 
29 protected:
34  std::shared_ptr<Geometry> geomA,
35  std::shared_ptr<Geometry> geomB,
36  std::vector<CollisionElement>& elementsA,
37  std::vector<CollisionElement>& elementsB) override;
38 
43  std::shared_ptr<Geometry> geomA,
44  std::shared_ptr<Geometry> geomB,
45  std::vector<CollisionElement>& elementsA) override;
46 
51  std::shared_ptr<Geometry> geomA,
52  std::shared_ptr<Geometry> geomB,
53  std::vector<CollisionElement>& elementsB) override;
54 
55 private:
56  ImplicitFunctionCentralGradient m_centralGrad;
57 };
58 } // namespace imstk
Base class for all collision detection classes. CollisionDetection classes produce CollisionData betw...
void computeCollisionDataAB(std::shared_ptr< Geometry > geomA, std::shared_ptr< Geometry > geomB, std::vector< CollisionElement > &elementsA, std::vector< CollisionElement > &elementsB) override
Compute collision data for AB simultaneously.
Compound Geometry.
void computeCollisionDataA(std::shared_ptr< Geometry > geomA, std::shared_ptr< Geometry > geomB, std::vector< CollisionElement > &elementsA) override
Compute collision data for side A.
Gradient given by central finite differences.
ImplicitGeometry to PointSet collision detection. This generates PointDirection collision data via si...
void computeCollisionDataB(std::shared_ptr< Geometry > geomA, std::shared_ptr< Geometry > geomB, std::vector< CollisionElement > &elementsB) override
Compute collision data for side B.