| 577 | } |
| 578 | |
| 579 | Expected<VertBitSet> findSpikeVertices( const MeshTopology & topology, const VertCoords & points, float minSumAngle, const VertBitSet * region, const ProgressCallback& cb ) |
| 580 | { |
| 581 | MR_TIMER; |
| 582 | const VertBitSet & testVerts = topology.getVertIds( region ); |
| 583 | VertBitSet res( testVerts.size() ); |
| 584 | auto completed = BitSetParallelFor( testVerts, [&]( VertId v ) |
| 585 | { |
| 586 | bool boundaryVert = false; |
| 587 | auto a = sumAngles( topology, points, v, &boundaryVert ); |
| 588 | if ( !boundaryVert && a < minSumAngle ) |
| 589 | res.set( v ); |
| 590 | }, cb ); |
| 591 | |
| 592 | if ( !completed ) |
| 593 | return unexpectedOperationCanceled(); |
| 594 | |
| 595 | return res; |
| 596 | } |
| 597 | |
| 598 | float dihedralAngleSin( const MeshTopology & topology, const VertCoords & points, UndirectedEdgeId ue ) |
| 599 | { |
no test coverage detected