pub struct SurfaceMeshView<'a> { /* private fields */ }Expand description
A read-only surface-mesh view over a half-edge graph.
Holds references to the half-edge array and the pre-built vertex→/face→
half-edge maps. The maps are built by build_surface_mesh_maps into
caller-owned buffers; this struct borrows them.
Implementations§
Source§impl<'a> SurfaceMeshView<'a>
impl<'a> SurfaceMeshView<'a>
Sourcepub fn new(
half_edges: &'a [HalfEdge],
vertex_to_he: &'a [u32],
face_to_he: &'a [u32],
) -> Self
pub fn new( half_edges: &'a [HalfEdge], vertex_to_he: &'a [u32], face_to_he: &'a [u32], ) -> Self
Construct a view from the half-edge array and pre-built maps.
The maps must have been built by build_surface_mesh_maps.
Sourcepub fn half_edge_count(&self) -> usize
pub fn half_edge_count(&self) -> usize
The number of half-edges in the graph.
Sourcepub fn half_edge(&self, index: u32) -> Result<HalfEdge, SurfaceMeshError>
pub fn half_edge(&self, index: u32) -> Result<HalfEdge, SurfaceMeshError>
Get a half-edge by index.
Sourcepub fn vertex_half_edge(&self, vertex: u32) -> Result<u32, SurfaceMeshError>
pub fn vertex_half_edge(&self, vertex: u32) -> Result<u32, SurfaceMeshError>
The representative outgoing half-edge for a vertex, or INVALID_INDEX
if the vertex has no incident half-edges (isolated vertex).
Sourcepub fn face_half_edge(&self, face: u32) -> Result<u32, SurfaceMeshError>
pub fn face_half_edge(&self, face: u32) -> Result<u32, SurfaceMeshError>
The representative half-edge for a face.
Sourcepub fn one_ring(
&self,
vertex: u32,
) -> Result<OneRingCirculator<'a>, SurfaceMeshError>
pub fn one_ring( &self, vertex: u32, ) -> Result<OneRingCirculator<'a>, SurfaceMeshError>
Create a one-ring vertex circulator around vertex.
Visits the vertices adjacent to vertex in counter-clockwise order
(following twin then next). For boundary vertices, the circulator
stops when it reaches the boundary (it does not wrap around).
Sourcepub fn face_loop(
&self,
face: u32,
) -> Result<FaceLoopCirculator<'a>, SurfaceMeshError>
pub fn face_loop( &self, face: u32, ) -> Result<FaceLoopCirculator<'a>, SurfaceMeshError>
Create a face-loop circulator around face.
Visits the 3 half-edges of the triangle face in order.
Sourcepub fn boundary_loop(
&self,
boundary_half_edge: u32,
) -> Result<BoundaryLoopWalker<'a>, SurfaceMeshError>
pub fn boundary_loop( &self, boundary_half_edge: u32, ) -> Result<BoundaryLoopWalker<'a>, SurfaceMeshError>
Create a boundary-loop walker starting from boundary_half_edge.
Walks along boundary half-edges (those with twin == INVALID_INDEX)
by following next until it returns to the start. The starting
half-edge must be a boundary half-edge.
Sourcepub fn collect_boundary_half_edges(
&self,
out: &mut [u32],
) -> Result<usize, SurfaceMeshError>
pub fn collect_boundary_half_edges( &self, out: &mut [u32], ) -> Result<usize, SurfaceMeshError>
Find all boundary half-edges (those with twin == INVALID_INDEX).
Writes the indices of boundary half-edges into out and returns the
count. If out is too small, returns an error with the required size.
Trait Implementations§
Source§impl<'a> Clone for SurfaceMeshView<'a>
impl<'a> Clone for SurfaceMeshView<'a>
Source§fn clone(&self) -> SurfaceMeshView<'a>
fn clone(&self) -> SurfaceMeshView<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for SurfaceMeshView<'a>
impl<'a> Debug for SurfaceMeshView<'a>
impl<'a> Copy for SurfaceMeshView<'a>
Auto Trait Implementations§
impl<'a> Freeze for SurfaceMeshView<'a>
impl<'a> RefUnwindSafe for SurfaceMeshView<'a>
impl<'a> Send for SurfaceMeshView<'a>
impl<'a> Sync for SurfaceMeshView<'a>
impl<'a> Unpin for SurfaceMeshView<'a>
impl<'a> UnsafeUnpin for SurfaceMeshView<'a>
impl<'a> UnwindSafe for SurfaceMeshView<'a>
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more