|
|
| EdgeIteratorT ()=delete |
| | Default construction is not allowed. Use one of the full constructors.
|
| |
| | EdgeIteratorT (const Mesh &a_mesh, const Face &a_face) noexcept |
| | Constructor, taking a mesh and a face as argument. The iterator begins at the half-edge index contained in the face.
|
| |
| | EdgeIteratorT (const Mesh &a_mesh, const uint32_t a_startEdgeIndex) noexcept |
| | Constructor, taking a mesh and an arbitrary starting half-edge index directly (rather than a face's own half-edge). Useful for iterating a half-edge loop when only an edge index – not its face – is available.
|
| |
| | EdgeIteratorT (const EdgeIteratorT &a_other) noexcept |
| | Copy constructor.
|
| |
| | EdgeIteratorT (EdgeIteratorT &&a_other) noexcept=default |
| | Move constructor.
|
| |
|
| ~EdgeIteratorT () noexcept=default |
| | Destructor.
|
| |
| EdgeIteratorT & | operator= (const EdgeIteratorT &a_other) noexcept=default |
| | Copy assignment operator.
|
| |
| EdgeIteratorT & | operator= (EdgeIteratorT &&a_other) noexcept=default |
| | Move assignment operator.
|
| |
| uint32_t | operator() () const noexcept |
| | Operator returning the index of the current half-edge.
|
| |
|
void | reset () noexcept |
| | Reset function for the iterator. This resets the iterator so that it begins from the starting half-edge.
|
| |
|
void | operator++ () noexcept |
| | Incrementation operator, bringing the iterator to the next half-edge.
|
| |
| bool | ok () const noexcept |
| | Function which checks if the iteration can be continued.
|
| |
template<class T>
class EBGeometry::DCEL::EdgeIteratorT< T >
Half-edge iterator class for navigating the half edge mesh.
Class which makes it easier to iterate through DCEL edges.
- Template Parameters
-
| T | Floating-point precision type. |
Iterates the half-edge loop bounding a polygon face (or starting from an arbitrary half-edge index), following EdgeT::getNextEdgeIndex() until either the loop returns to its starting edge (a well-formed, closed face) or an unset next-edge index is reached (an incomplete/open half-edge chain). Resolves indices against the mesh passed at construction, so the iterator itself is a lightweight, short-lived (stack-only) helper – it must never be stored inside any DCEL object, a PODVector, or otherwise made to cross a host/device boundary as data (its m_mesh pointer is only ever meaningful within the address space it was constructed in). Typical usage:
for (EdgeIterator it(mesh, someFace); it.ok(); ++it) {
const uint32_t edgeIndex = it();
}
- Note
- Every member resolves purely through m_mesh (itself resolved via EBGEOMETRY_HOST_DEVICE MeshT accessors) and plain uint32_t/bool values, so the entire public and protected interface is annotated EBGEOMETRY_HOST_DEVICE. Unlike every other DCEL class, this one is deliberately NOT std::is_trivially_copyable – see the copy constructor's doc comment – which is what stops it from being accepted into a PODVector in the first place.
- Template Parameters
-
| T | Floating-point precision type. |