Skip to content

Commit 37c2a59

Browse files
committed
[algorithm] Using the ContainsInPoint operation
1 parent aee4031 commit 37c2a59

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

src/sofa/collisionAlgorithm/algorithm/InsertionAlgorithm.h

Lines changed: 5 additions & 12 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/colliisonAlgorithm/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>
@@ -230,6 +231,8 @@ class InsertionAlgorithm : public BaseAlgorithm
230231
auto findClosestProxOnVol =
231232
Operations::FindClosestProximity::Operation::get(l_volGeom);
232233
auto projectOnVol = Operations::Project::Operation::get(l_volGeom);
234+
auto containsPointInVol =
235+
Operations::ContainsPointInProximity::Operation::get(l_volGeom);
233236

234237
// Iterate over shaft segments to find which one contains the next candidate CP
235238
for (auto itShaft = l_shaftGeom->begin(); itShaft != l_shaftGeom->end(); itShaft++)
@@ -269,22 +272,12 @@ class InsertionAlgorithm : public BaseAlgorithm
269272
// proximity
270273
shaftProx = projectOnShaft(candidateCP, itShaft->element()).prox;
271274
if (!shaftProx) continue;
275+
272276
const BaseProximity::SPtr volProx = findClosestProxOnVol(
273277
shaftProx, l_volGeom.get(), projectOnVol, getFilterFunc());
274278
if (!volProx) continue;
275279

276-
TetrahedronProximity::SPtr tetProx =
277-
dynamic_pointer_cast<TetrahedronProximity>(volProx);
278-
if (!tetProx) continue;
279-
280-
double f0(tetProx->f0()), f1(tetProx->f1()), f2(tetProx->f2()),
281-
f3(tetProx->f3());
282-
bool isInTetra = toolbox::TetrahedronToolBox::isInTetra(
283-
shaftProx->getPosition(), tetProx->element()->getTetrahedronInfo(), f0,
284-
f1, f2, f3);
285-
286-
// Ensure candidate CP lies inside tetrahedron
287-
if (isInTetra)
280+
if (containsPointInVol(shaftProx->getPosition(), volProx))
288281
{
289282
volProx->normalize();
290283
m_couplingPts.push_back(volProx);

0 commit comments

Comments
 (0)