| 174 | } |
| 175 | |
| 176 | AffineXf3f getRefinedXf( const Mesh& mesh, FeaturesObjectKind featureType, const VertBitSet& toRefine, const FaceBitSet* referenceFaces ) |
| 177 | { |
| 178 | auto selection = referenceFaces ? filterDisjointPoints( mesh, toRefine, *referenceFaces ) : toRefine; |
| 179 | // ignore the result if it is too small |
| 180 | if ( selection.count() < getPointsMinimalCount( featureType ) ) |
| 181 | selection = toRefine; |
| 182 | |
| 183 | std::vector<Vector3f> points; |
| 184 | points.reserve( selection.count() ); |
| 185 | |
| 186 | for ( const auto v : selection ) |
| 187 | points.emplace_back( mesh.points[v] ); |
| 188 | |
| 189 | auto tempObject = makeObjectFromEnum( featureType, points ); |
| 190 | return tempObject->xf(); |
| 191 | } |
| 192 | |
| 193 | AffineXf3f getRefinedXf( const PointCloud& pointCloud, FeaturesObjectKind featureType, const VertBitSet& toRefine, const VertBitSet* referencePoints ) |
| 194 | { |
no test coverage detected