Skip to content

Commit ecb2707

Browse files
committed
remove useless non-active beams code and rename some vars
1 parent 2e7e9ec commit ecb2707

2 files changed

Lines changed: 29 additions & 35 deletions

File tree

src/BeamAdapter/component/controller/InterventionalRadiologyController.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ class InterventionalRadiologyController : public sofa::component::controller::Me
186186
unsigned int m_currentSensorData;
187187
type::vector<Real> m_nodeCurvAbs;
188188
type::vector< type::vector<int> > m_idInstrumentCurvAbsTable;
189-
unsigned int m_numControlledNodes; // Excluding the nodes that are "dropped"
190189
};
191190

192191
#if !defined(SOFA_PLUGIN_BEAMADAPTER_INTERVENTIONALRADIOCONTROLLER_CPP)

src/BeamAdapter/component/controller/InterventionalRadiologyController.inl

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@ void InterventionalRadiologyController<DataTypes>::bwdInit()
213213
WriteAccessor<Data<VecCoord> > x = *this->mState->write(sofa::core::vec_id::write_access::position);
214214
for(unsigned int i=0; i<x.size(); i++)
215215
x[i] = d_startingPos.getValue();
216-
m_numControlledNodes = x.size();
217216

218217
sofa::Size nbrBeam = 0;
219218
for (unsigned int i = 0; i < m_instrumentsList.size(); i++)
@@ -226,12 +225,6 @@ void InterventionalRadiologyController<DataTypes>::bwdInit()
226225
nbrBeam += nb;
227226
}
228227

229-
if (nbrBeam > m_numControlledNodes)
230-
{
231-
msg_warning() << "Parameter missmatch: According to the list of controlled instrument controlled. The number of potential beams: "
232-
<< nbrBeam << " exceed the number of degree of freedom in the MechanicalObject: " << m_numControlledNodes << ". This could lead to unespected behavior.";
233-
}
234-
235228
applyInterventionalRadiologyController();
236229

237230
sofa::core::objectmodel::BaseObject::d_componentState.setValue(sofa::core::objectmodel::ComponentState::Valid);
@@ -775,22 +768,23 @@ void InterventionalRadiologyController<DataTypes>::applyInterventionalRadiologyC
775768
Data<VecCoord>* datax = this->getMechanicalState()->write(sofa::core::vec_id::write_access::position);
776769
auto x = sofa::helper::getWriteOnlyAccessor(*datax);
777770
VecCoord xbuf = x.ref();
778-
779-
sofa::Size nbrCurvAbs = newCurvAbs.size(); // number of simulated nodes
780-
if (nbrCurvAbs > x.size())
771+
772+
const sofa::Size numberOfNodes = x.size();
773+
sofa::Size numberOfSimulatedNodes = newCurvAbs.size(); // number of simulated nodes
774+
if (numberOfSimulatedNodes > numberOfNodes)
781775
{
782-
msg_warning() << "Parameters missmatch. There are more curv abscisses '" << nbrCurvAbs << "' than the number of dof: " << x.size();
783-
nbrCurvAbs = x.size();
776+
msg_warning() << "Parameters missmatch. There are more curv abscisses '" << numberOfSimulatedNodes << "' than the number of dof: " << numberOfNodes;
777+
numberOfSimulatedNodes = numberOfNodes;
784778
}
785779

786-
const sofa::Size prev_nbrCurvAbs = m_nodeCurvAbs.size(); // previous number of simulated nodes;
780+
const sofa::Size prev_numberOfSimulatedNodes = m_nodeCurvAbs.size(); // previous number of simulated nodes;
787781

788-
const sofa::Size nbrUnactiveNode = (m_numControlledNodes > nbrCurvAbs) ? m_numControlledNodes - nbrCurvAbs : 0; // m_numControlledNodes == nbr Dof | nbr of CurvAbs > 0
789-
const sofa::Size prev_nbrUnactiveNode = (m_numControlledNodes > prev_nbrCurvAbs) ? m_numControlledNodes - prev_nbrCurvAbs : 0;
782+
const sofa::Size numberOfUnactiveNodes = numberOfNodes - numberOfSimulatedNodes; // m_numControlledNodes == nbr Dof | nbr of CurvAbs > 0
783+
const sofa::Size prev_numberOfUnactiveNodes = numberOfNodes - prev_numberOfSimulatedNodes;
790784

791-
for (sofa::Index xId = 0; xId < nbrCurvAbs; xId++)
785+
for (sofa::Index xId = 0; xId < numberOfSimulatedNodes; xId++)
792786
{
793-
const sofa::Index globalNodeId = nbrUnactiveNode + xId; // position of the curvAbs in the dof buffer filled by the end
787+
const sofa::Index globalNodeId = numberOfUnactiveNodes + xId; // position of the curvAbs in the dof buffer filled by the end
794788
const Real xCurvAbs = modifiedCurvAbs[xId];
795789

796790
if ((xCurvAbs - std::numeric_limits<float>::epsilon()) > m_nodeCurvAbs.back() + threshold)
@@ -811,7 +805,7 @@ void InterventionalRadiologyController<DataTypes>::applyInterventionalRadiologyC
811805
break;
812806
}
813807

814-
sofa::Index prev_globalNodeId = prev_nbrUnactiveNode + prev_xId;
808+
sofa::Index prev_globalNodeId = prev_numberOfUnactiveNodes + prev_xId;
815809
const Real prev_xCurvAbs = m_nodeCurvAbs[prev_xId];
816810

817811
if (fabs(prev_xCurvAbs - xCurvAbs) < threshold)
@@ -856,36 +850,37 @@ void InterventionalRadiologyController<DataTypes>::applyInterventionalRadiologyC
856850

857851
// ## STEP 4: Assign the beams
858852
helper::AdvancedTimer::stepBegin("step4");
859-
sofa::Size nbrBeam = newCurvAbs.size() - 1; // number of simulated beams
860-
const sofa::Size numEdges = m_numControlledNodes - 1;
853+
sofa::Size numberOfBeams = newCurvAbs.size() - 1; // number of simulated beams
854+
const sofa::Size numberOfEdges = x.size() - 1;
861855

862-
if (numEdges < nbrBeam) // verify that there is a sufficient number of Edge in the topology : TODO if not, modify topo !
856+
if (numberOfEdges < numberOfBeams) // verify that there is a sufficient number of Edge in the topology : TODO if not, modify topo !
863857
{
864-
msg_error() << "Not enough edges in the topology. Only: " << numEdges << " while nbrBeam = " << nbrBeam << ". Will simulate only " << numEdges << " beams.";
865-
nbrBeam = numEdges;
858+
msg_error() << "Not enough edges in the topology. Only: " << numberOfEdges << " while nbrBeam = " << numberOfBeams << ". Will simulate only " << numberOfEdges << " beams.";
859+
860+
numberOfBeams = numberOfEdges;
866861
}
867862

868863

869864
const type::vector<Real>& rotInstruments = d_rotationInstrument.getValue();
870-
for (unsigned int b=0; b< nbrBeam; b++)
865+
for (unsigned int b=0; b< numberOfBeams; b++)
871866
{
872-
const Real& x0 = newCurvAbs[b];
873-
const Real& x1 = newCurvAbs[b+1];
867+
const Real x0 = newCurvAbs[b];
868+
const Real x1 = newCurvAbs[b+1];
874869

875870
for (unsigned int i=0; i<m_instrumentsList.size(); i++)
876871
{
877-
const Real& xmax = tools_xEnd[i];
878-
const Real& xmin = tools_xBegin[i];
872+
const Real xmax = tools_xEnd[i];
873+
const Real xmin = tools_xBegin[i];
879874

880875
if (x0>(xmin- threshold) && x0<(xmax+ threshold) && x1>(xmin- threshold) && x1<(xmax+ threshold))
881876
{
882-
BaseMeshTopology::EdgeID eID = (BaseMeshTopology::EdgeID)(numEdges - nbrBeam + b);
877+
const auto eID = static_cast<BaseMeshTopology::EdgeID>(numberOfEdges - numberOfBeams + b);
883878

884-
Real length = x1 - x0;
885-
Real x0_local = x0-xmin;
886-
Real x1_local = x1-xmin;
879+
const Real length = x1 - x0;
880+
const Real x0_local = x0-xmin;
881+
const Real x1_local = x1-xmin;
887882

888-
Real theta = rotInstruments[i];
883+
const Real theta = rotInstruments[i];
889884

890885
m_instrumentsList[i]->addBeam(eID, length, x0_local, x1_local,theta );
891886
}
@@ -896,7 +891,7 @@ void InterventionalRadiologyController<DataTypes>::applyInterventionalRadiologyC
896891

897892
// ## STEP 5: Fix the not simulated nodes
898893
helper::AdvancedTimer::stepBegin("step5");
899-
unsigned int firstSimulatedNode = m_numControlledNodes - nbrBeam;
894+
unsigned int firstSimulatedNode = numberOfNodes - numberOfBeams;
900895

901896
// => 1. Fix the nodes (beginning of the instruments) that are not "out"
902897
fixFirstNodesWithUntil(firstSimulatedNode);

0 commit comments

Comments
 (0)