| 120 | } |
| 121 | |
| 122 | std::string getICPStatusInfo( int iterations, ICPExitType exitType ) |
| 123 | { |
| 124 | std::string result = "Performed " + std::to_string( iterations ) + " iterations.\n"; |
| 125 | switch ( exitType ) |
| 126 | { |
| 127 | case MR::ICPExitType::NotFoundSolution: |
| 128 | result += "No solution found."; |
| 129 | break; |
| 130 | case MR::ICPExitType::MaxIterations: |
| 131 | result += "Limit of iterations reached."; |
| 132 | break; |
| 133 | case MR::ICPExitType::MaxBadIterations: |
| 134 | result += "No improvement iterations limit reached."; |
| 135 | break; |
| 136 | case MR::ICPExitType::StopMsdReached: |
| 137 | result += "Required mean square deviation reached."; |
| 138 | break; |
| 139 | case MR::ICPExitType::NotStarted: |
| 140 | default: |
| 141 | result = "Not started yet."; |
| 142 | break; |
| 143 | } |
| 144 | return result; |
| 145 | } |
| 146 | |
| 147 | void updatePointPairs( PointPairs & pairs, |
| 148 | const MeshOrPointsXf& src, const MeshOrPointsXf& tgt, |
no outgoing calls
no test coverage detected