| 38 | } |
| 39 | |
| 40 | VertBitSet findInnerShellVerts( const MeshPart & mp, const Mesh & shell, const FindInnerShellSettings & settings ) |
| 41 | { |
| 42 | MR_TIMER; |
| 43 | VertBitSet mySide( shell.topology.vertSize() ), notBd( shell.topology.vertSize() ); |
| 44 | BitSetParallelFor( shell.topology.getValidVerts(), [&]( VertId v ) |
| 45 | { |
| 46 | const auto info = classifyShellVert( mp, shell.points[v], settings ); |
| 47 | if ( info.inRange && !info.projOnBd ) |
| 48 | { |
| 49 | notBd.set( v ); |
| 50 | if ( info.rightSide ) |
| 51 | mySide.set( v ); |
| 52 | } |
| 53 | } ); |
| 54 | |
| 55 | const auto largeComps = MeshComponents::getLargeComponentVerts( shell, settings.minVertsInComp, ¬Bd ); |
| 56 | mySide &= largeComps; |
| 57 | const auto largeMySide = MeshComponents::getLargeComponentVerts( shell, settings.minVertsInComp, &mySide ); |
| 58 | const auto otherSide = largeComps - mySide; |
| 59 | const auto largeOtherSide = MeshComponents::getLargeComponentVerts( shell, settings.minVertsInComp, &otherSide ); |
| 60 | |
| 61 | auto res = largeMySide | ( otherSide - largeOtherSide ); |
| 62 | return res; |
| 63 | } |
| 64 | |
| 65 | FaceBitSet findInnerShellFacesWithSplits( const MeshPart & mp, Mesh & shell, const FindInnerShellSettings & settings ) |
| 66 | { |
no test coverage detected