@@ -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