| 293 | } |
| 294 | |
| 295 | FaceBitSet getLargeByAreaSmoothComponents( const MeshPart& mp, float minArea, float angleFromPlanar, |
| 296 | UndirectedEdgeBitSet * outBdEdgesBetweenLargeComps ) |
| 297 | { |
| 298 | const float critCos = std::cos( angleFromPlanar ); |
| 299 | UndirectedEdgeBitSet bdEdges( mp.mesh.topology.undirectedEdgeSize() ); |
| 300 | BitSetParallelForAll( bdEdges, [&]( UndirectedEdgeId ue ) |
| 301 | { |
| 302 | if ( mp.mesh.topology.isLoneEdge( ue ) ) |
| 303 | return; |
| 304 | if ( mp.mesh.dihedralAngleCos( ue ) < critCos ) |
| 305 | bdEdges.set( ue ); |
| 306 | } ); |
| 307 | auto unionFind = MeshComponents::getUnionFindStructureFacesPerEdge( mp, &bdEdges ); |
| 308 | return MeshComponents::getLargeByAreaComponents( mp, unionFind, minArea, outBdEdgesBetweenLargeComps ); |
| 309 | } |
| 310 | |
| 311 | FaceBitSet getLargeByAreaComponents( const MeshPart& mp, BaseUnionFind<FaceId> & unionFind, float minArea, |
| 312 | UndirectedEdgeBitSet * outBdEdgesBetweenLargeComps ) |
nothing calls this directly
no test coverage detected