Skip to content

Commit 87b8627

Browse files
committed
[algorithm] Using containsPoint operations in the insertion algorithm class - no dynamic casts to elements
1 parent 12c9743 commit 87b8627

File tree

1 file changed

+6
-13
lines changed

1 file changed

+6
-13
lines changed

src/sofa/collisionAlgorithm/algorithm/InsertionAlgorithm.h

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <sofa/collisionAlgorithm/operations/CreateCenterProximity.h>
77
#include <sofa/collisionAlgorithm/operations/FindClosestProximity.h>
88
#include <sofa/collisionAlgorithm/operations/Project.h>
9+
#include <sofa/collisionAlgorithm/operations/ContainsPoint.h>
910
#include <sofa/collisionAlgorithm/proximity/EdgeProximity.h>
1011
#include <sofa/collisionAlgorithm/proximity/TetrahedronProximity.h>
1112
#include <sofa/component/constraint/lagrangian/solver/ConstraintSolverImpl.h>
@@ -228,20 +229,12 @@ class InsertionAlgorithm : public BaseAlgorithm
228229
// Only accept proximities if the tip is inside the tetra during insertion
229230
if (volProx)
230231
{
231-
TetrahedronProximity::SPtr tetProx =
232-
dynamic_pointer_cast<TetrahedronProximity>(volProx);
233-
if (tetProx)
232+
auto containsPointInVol =
233+
Operations::ContainsPointProximity::Operation::get(l_volGeom->getTypeInfo());
234+
if(containsPointInVol(tipProx->getPosition(), volProx))
234235
{
235-
double f0(tetProx->f0()), f1(tetProx->f1()), f2(tetProx->f2()),
236-
f3(tetProx->f3());
237-
bool isInTetra = toolbox::TetrahedronToolBox::isInTetra(
238-
tipProx->getPosition(), tetProx->element()->getTetrahedronInfo(), f0,
239-
f1, f2, f3);
240-
if (isInTetra)
241-
{
242-
volProx->normalize();
243-
m_couplingPts.push_back(volProx);
244-
}
236+
volProx->normalize();
237+
m_couplingPts.push_back(volProx);
245238
}
246239
}
247240
}

0 commit comments

Comments
 (0)