9 #include "imstkCollisionDetectionAlgorithm.h" 10 #include "imstkDataArray.h" 11 #include "imstkMacros.h" 71 void setPadding(
const Vec3d& padding) { m_padding = padding; }
72 const Vec3d& getPadding()
const {
return m_padding; }
79 void setProximity(
const double proximity) { m_proximity = proximity; }
80 double getProximity()
const {
return m_proximity; }
89 bool getDoBroadPhase()
const {
return m_doBroadPhase; }
97 std::shared_ptr<Geometry> geomA,
98 std::shared_ptr<Geometry> geomB,
99 std::vector<CollisionElement>& elementsA,
100 std::vector<CollisionElement>& elementsB)
override;
102 void vertexToTriangleTest(
103 std::shared_ptr<Geometry> geomA,
104 std::shared_ptr<Geometry> geomB,
105 std::vector<CollisionElement>& elementsA,
106 std::vector<CollisionElement>& elementsB);
108 void lineMeshEdgeToTriangleTest(
109 std::shared_ptr<Geometry> geomA,
110 std::shared_ptr<Geometry> geomB,
111 std::vector<CollisionElement>& elementsA,
112 std::vector<CollisionElement>& elementsB);
114 void surfMeshEdgeToTriangleTest(
115 std::shared_ptr<Geometry> geomA,
116 std::shared_ptr<Geometry> geomB,
117 std::vector<CollisionElement>& elementsA,
118 std::vector<CollisionElement>& elementsB);
125 bool doBroadPhaseCollisionCheck(
126 std::shared_ptr<Geometry> geomA,
127 std::shared_ptr<Geometry> geomB)
const;
129 bool m_generateEdgeEdgeContacts =
false;
130 bool m_generateVertexTriangleContacts =
true;
131 bool m_doBroadPhase =
true;
133 std::vector<bool> m_vertexInside;
135 Vec3d m_padding = Vec3d(0.001, 0.001, 0.001);
136 double m_proximity = -1.0;
Base class for all collision detection classes. CollisionDetection classes produce CollisionData betw...
void setProximity(const double proximity)
Any edges with vertices not within this proximity will not have edges checked. This can be used to gr...
void setPadding(const Vec3d &padding)
Set padding to the broad phase (AABB tests)
Closed mesh to mesh collision with brute force strategy. It can handle closed SurfaceMesh vs PointSet...
void setDoBroadPhase(const bool doBroadPhase)
Get/Set whether to do AABB broad phase. The volume bounded by the object could be larger than the vol...
void setGenerateVertexTriangleContacts(bool genVertexTriangleContacts)
If true, vertex to triangle contacts will be generated default true.
void setGenerateEdgeEdgeContacts(bool genEdgeEdgeContacts)
If true, edge to edge contacts will be generated default true.
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.