LineMesh to LineMesh collision, including two-body and self collision.
Description
This PR adds a new feature for detecting and handling LineMesh to LineMesh collisions. Both two-body as well as self-collision cases are handled. It implements a new class imstk::LineMeshToLineMeshCCD
to compute Continuous Collision Detection (CCD) between two (or self) line meshes.
New imstk::CCDAlgorithm
has been added as a base class for all CCD algorithms to be added in the future (at least for Mesh-Mesh collisions, non-mesh object collisions might differ). This class enforces the requirement of caching the previous step geometries needed by a CCD algorithm.
New imstk::PbdEdgeEdgeCCDConstraint
has been added to handle edge-edge CCD constraints.
An example (PBDSutureSelfCCD
) has been added to demonstrate this new feature.
PR Checklist
-
No API changes were made (or the changes have been approved) -
No major design changes were made (or the changes have been approved) -
No new dependencies were added (or the new dependencies have been approved) -
Added test (or behavior not changed) -
Updated API documentation (or API not changed) -
Ran the CodeFormatEnforcer
task and verified the header is in all new files -
Added iMSTK examples for all new major features (if any)
Edited by Shreeraj Jadhav