[][src]Struct gut::mesh::polymesh::PolyMesh

pub struct PolyMesh<T: Real> {
    pub vertex_positions: IntrinsicAttribute<[T; 3], VertexIndex>,
    pub indices: Vec<usize>,
    pub offsets: Vec<usize>,
    pub vertex_attributes: AttribDict<VertexIndex>,
    pub face_attributes: AttribDict<FaceIndex>,
    pub face_vertex_attributes: AttribDict<FaceVertexIndex>,
    pub face_edge_attributes: AttribDict<FaceEdgeIndex>,
}

Mesh with arbitrarily shaped faces. It could have polygons with any number of sides. All faces are assumed to be closed polygons.

Fields

vertex_positions: IntrinsicAttribute<[T; 3], VertexIndex>

Vertex positions intrinsic attribute.

indices: Vec<usize>

Indices into vertices representing face vertices.

offsets: Vec<usize>

Offsets into indices representing individual faces. The last element in this Vec is always the length of indices for convenience.

vertex_attributes: AttribDict<VertexIndex>

Vertex attributes.

face_attributes: AttribDict<FaceIndex>

Polygon attributes.

face_vertex_attributes: AttribDict<FaceVertexIndex>

Polygon vertex attributes.

face_edge_attributes: AttribDict<FaceEdgeIndex>

Polygon edge attributes.

Methods

impl<T: Real> PolyMesh<T>[src]

pub fn new(verts: Vec<[T; 3]>, faces: &[usize]) -> PolyMesh<T>[src]

Construct a PolyMesh from an array of vertices and an array of indices marking the vertex indices into the vertex array for each face preceeded by the number of vertices in the corresponding face. I.e. faces is expected to be structured as a contiguous array of a number (corresponding to the number of vertices in the face) followed by the vertex indices (in the same face): n i_1 i_2 ... i_n m j_1 j_2 ... j_m ...

Examples

    use gut::mesh::PolyMesh;
    let points = vec![
        [0.0, 0.0, 0.0],
        [1.0, 0.0, 0.0],
        [0.0, 1.0, 0.0],
        [1.0, 1.0, 0.0],
        [0.0, 0.0, 1.0],
        [1.0, 0.0, 1.0]];
    let faces = vec![3, 0, 1, 2, // first triangle
                     3, 1, 3, 2, // second triangle
                     4, 0, 1, 5, 4]; // quadrilateral

    let polymesh = PolyMesh::new(points, &faces);

    assert_eq!(polymesh.indices, [0, 1, 2, 1, 3, 2, 0, 1, 5, 4]);
    assert_eq!(polymesh.offsets, [0, 3, 6, 10]);

Important traits for DynamicIndexSliceIter<'a>
pub fn face_iter(&self) -> DynamicIndexSliceIter[src]

Important traits for DynamicIndexSliceIterMut<'a>
pub fn face_iter_mut(&mut self) -> DynamicIndexSliceIterMut[src]

pub fn reverse(&mut self)[src]

Reverse the order of each polygon in this mesh.

pub fn reversed(self) -> PolyMesh<T>[src]

Reverse the order of each polygon in this mesh. This is the consuming version of the reverse method.

Trait Implementations

impl<T: Real> SplitIntoConnectedComponents<VertexFaceIndex> for PolyMesh<T>[src]

impl<T: Real> Merge for PolyMesh<T>[src]

fn merge(&mut self, other: Self) -> &mut Self[src]

Attributes with the same name but different types won't be merged.

impl<T: Real> NumVertices for PolyMesh<T>[src]

impl<T: Real> NumFaces for PolyMesh<T>[src]

impl<T: Real> Attrib for PolyMesh<T>[src]

impl<T: Real> VertexPositions for PolyMesh<T>[src]

type Element = [T; 3]

impl<T: Real> FaceVertex for PolyMesh<T>[src]

fn face_to_vertex<FI>(&self, fidx: FI, which: usize) -> Option<VertexIndex> where
    FI: Copy + Into<FaceIndex>, 
[src]

Given the index of a polygonal face fidx, return the index of the vertex the whichth vertex within the face.

impl<T: Real> FaceEdge for PolyMesh<T>[src]

impl<T: Real> VertexAttrib for PolyMesh<T>[src]

impl<T: Real> FaceAttrib for PolyMesh<T>[src]

impl<T: Real> FaceVertexAttrib for PolyMesh<T>[src]

impl<T: Real> FaceEdgeAttrib for PolyMesh<T>[src]

impl<T: Real> From<PolyMesh<T>> for PointCloud<T>[src]

Convert a polygon mesh to a point cloud by erasing all polygon data.

impl<T: Real> From<TriMesh<T>> for PolyMesh<T>[src]

Convert a triangle mesh into a polygon mesh.

impl<T: Real> From<QuadMesh<T>> for PolyMesh<T>[src]

Convert a quad mesh into a polygon mesh.

impl<T: Real> From<PointCloud<T>> for PolyMesh<T>[src]

Convert a point cloud into a polygon mesh.

impl<T: Real> From<TetMesh<T>> for PolyMesh<T>[src]

impl<T: Real> From<PolyMesh<T>> for TriMeshExt<T>[src]

Convert a triangle mesh to a polygon mesh.

impl<T: Real> From<PolyMesh<T>> for TriMesh<T>[src]

Convert a triangle mesh to a polygon mesh.

impl<T: Clone + Real> Clone for PolyMesh<T>[src]

impl<T: Real> Default for PolyMesh<T>[src]

fn default() -> Self[src]

Produce an empty mesh. This is not particularly useful on its own, however it can be used as a null case for various mesh algorithms.

impl<T: PartialEq + Real> PartialEq<PolyMesh<T>> for PolyMesh<T>[src]

impl<T: Debug + Real> Debug for PolyMesh<T>[src]

impl<T: Real> StructuralPartialEq for PolyMesh<T>[src]

Auto Trait Implementations

impl<T> Send for PolyMesh<T>

impl<T> Sync for PolyMesh<T>

impl<T> Unpin for PolyMesh<T> where
    T: Unpin

impl<T> UnwindSafe for PolyMesh<T> where
    T: UnwindSafe

impl<T> RefUnwindSafe for PolyMesh<T> where
    T: RefUnwindSafe

Blanket Implementations

impl<T, M> Scale<T> for M where
    M: VertexPositions<Element = [T; 3]>,
    T: BaseFloat
[src]

fn scale(&mut Self, [T; 3])[src]

Scale a mesh in 3D by a given vector of scale factors. s = [1.0; 3] corresponds to a noop.

impl<T, M> Rotate<T> for M where
    M: VertexPositions<Element = [T; 3]>,
    T: BaseFloat
[src]

fn rotate_by_matrix(&mut Self, [[T; 3]; 3])[src]

Rotate the mesh using the given column-major rotation matrix.

impl<T, M> Translate<T> for M where
    M: VertexPositions<Element = [T; 3]>,
    T: BaseFloat
[src]

fn translate(&mut Self, [T; 3])[src]

Translate the mesh by the given translation vector (displacement) t.

impl<S, T> Scaled<T> for S where
    S: Scale<T>,
    T: Copy
[src]

impl<S, T> Rotated<T> for S where
    S: Rotate<T>,
    T: BaseFloat
[src]

impl<S, T> Translated<T> for S where
    S: Translate<T>, 
[src]

impl<M, T> BoundingBox<T> for M where
    M: VertexPositions<Element = [T; 3]>,
    T: Real
[src]

fn bounding_box(&Self) -> BBox<T>[src]

Compute the bounding box of this object.

impl<M> Connectivity<VertexFaceIndex> for M where
    M: NumVertices + NumFaces + FaceVertex
[src]

impl<T> Bytes for T[src]

impl<M, T> VertexMesh<T> for M where
    M: Attrib + VertexAttrib + NumVertices + VertexPositions<Element = [T; 3]>,
    T: Real
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = !

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]