| 253 | } |
| 254 | |
| 255 | EdgeId Mesh::addSeparateEdgeLoop( const std::vector<Vector3f>& contourPoints ) |
| 256 | { |
| 257 | if ( contourPoints.size() < 3 ) |
| 258 | return {}; |
| 259 | |
| 260 | auto newEdges = sMakeEdgePath( *this, contourPoints); |
| 261 | // close loop |
| 262 | topology.splice( newEdges.front(), newEdges.back().sym() ); |
| 263 | |
| 264 | invalidateCaches(); |
| 265 | |
| 266 | return newEdges.front(); |
| 267 | } |
| 268 | |
| 269 | EdgeId Mesh::addSeparateContours( const Contours3f& contours, const AffineXf3f* xf ) |
| 270 | { |