Skip to content

Commit 25170d5

Browse files
committed
[algorithm] small clean & rework - algorithm logic and iterator usage
1 parent e4ab9eb commit 25170d5

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

src/sofa/collisionAlgorithm/algorithm/InsertionAlgorithm.h

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ class InsertionAlgorithm : public BaseAlgorithm
122122
auto& collisionOutput = *d_collisionOutput.beginEdit();
123123
auto& insertionOutput = *d_insertionOutput.beginEdit();
124124

125+
insertionOutput.clear();
126+
125127
if (m_couplingPts.empty())
126128
{
127129
const MechStateTipType::SPtr mstate = l_tipGeom->getContext()->get<MechStateTipType>();
@@ -145,8 +147,8 @@ class InsertionAlgorithm : public BaseAlgorithm
145147
const BaseProximity::SPtr shaftProx = findClosestProxOnShaft(
146148
dpair.second, l_shaftGeom.get(), projectOnShaft, getFilterFunc());
147149
m_needlePts.push_back(shaftProx);
148-
m_couplingPts.push_back(dpair.second->copy());
149-
insertionOutput.add(shaftProx, dpair.second->copy());
150+
m_couplingPts.push_back(dpair.second);
151+
insertionOutput.add(shaftProx, dpair.second);
150152
}
151153
collisionOutput.clear();
152154
return;
@@ -155,17 +157,16 @@ class InsertionAlgorithm : public BaseAlgorithm
155157

156158
collisionOutput.clear();
157159

158-
ElementIterator::SPtr itTip = l_tipGeom->begin();
159160
auto createTipProximity =
160-
Operations::CreateCenterProximity::Operation::get(itTip->getTypeInfo());
161+
Operations::CreateCenterProximity::Operation::get(l_tipGeom->getTypeInfo());
161162
auto findClosestProxOnSurf =
162163
Operations::FindClosestProximity::Operation::get(l_surfGeom);
163164
auto projectOnSurf = Operations::Project::Operation::get(l_surfGeom);
164165
auto projectOnTip = Operations::Project::Operation::get(l_tipGeom);
165166

166-
for (; itTip != l_tipGeom->end(); itTip++)
167+
for (const auto& itTip : *l_tipGeom)
167168
{
168-
BaseProximity::SPtr tipProx = createTipProximity(itTip->element());
169+
BaseProximity::SPtr tipProx = createTipProximity(itTip.element());
169170
if (!tipProx) continue;
170171
const BaseProximity::SPtr surfProx = findClosestProxOnSurf(
171172
tipProx, l_surfGeom.get(), projectOnSurf, getFilterFunc());
@@ -174,22 +175,16 @@ class InsertionAlgorithm : public BaseAlgorithm
174175
surfProx->normalize();
175176
if (d_projective.getValue())
176177
{
177-
tipProx = projectOnTip(surfProx->getPosition(), itTip->element()).prox;
178+
tipProx = projectOnTip(surfProx->getPosition(), itTip.element()).prox;
178179
if (!tipProx) continue;
179180
tipProx->normalize();
180-
181-
collisionOutput.add(tipProx, surfProx);
182-
}
183-
else
184-
{
185-
collisionOutput.add(tipProx, surfProx);
186181
}
182+
collisionOutput.add(tipProx, surfProx);
187183
}
188184
}
189185
}
190186
else
191187
{
192-
insertionOutput.clear();
193188

194189
ElementIterator::SPtr itTip = l_tipGeom->begin();
195190
auto createTipProximity =

0 commit comments

Comments
 (0)