[−][src]Struct gut::mesh::tetmesh::TetMesh
A basic mesh composed of tetrahedra. This mesh is based on vertex positions and a list of vertex indices representing tetrahedra.
Fields
vertex_positions: IntrinsicAttribute<[T; 3], VertexIndex>
Vertex positions.
indices: IntrinsicAttribute<[usize; 4], CellIndex>
Quadruples of indices into vertices
representing tetrahedra.
The canonical non-inverted tetrahedron is indexed as follows:
3
/|\
/ | \
/ | \
2/...|...\0
\ | /
\ | /
\ | /
\|/
1
(the dotted line is behind the dashed).
vertex_attributes: AttribDict<VertexIndex>
Vertex Attributes.
cell_attributes: AttribDict<CellIndex>
Cell Attributes.
cell_vertex_attributes: AttribDict<CellVertexIndex>
Cell vertex Attributes.
cell_face_attributes: AttribDict<CellFaceIndex>
Cell face Attributes.
Methods
impl<T: Real> TetMesh<T>
[src]
pub fn surface_topo(&self) -> Vec<[usize; 3]>
[src]
Extract the surface topology (triangles) of the TetMesh
.
This function assumes that the given tetmesh is a manifold.
pub fn surface_triangle_data(&self) -> (Vec<[usize; 3]>, Vec<usize>, Vec<usize>)
[src]
Extract the surface triangle information of the TetMesh
. This includes the triangle
topology, which tet each triangle came from and which face on the originating tet it
belongs to. The returned vectors have the same size. This function assumes that
the given tetmesh is a manifold.
pub fn surface_vertices(&self) -> Vec<usize>
[src]
Extract indices of vertices that are on the surface of this TetMesh
.
pub fn surface_trimesh(&self) -> TriMesh<T>
[src]
Convert into a mesh of triangles representing the surface of this TetMesh
.
pub fn surface_trimesh_with_mapping(
&self,
original_vertex_index_name: Option<&str>,
original_tet_index_name: Option<&str>,
original_tet_vertex_index_name: Option<&str>,
original_tet_face_index_name: Option<&str>
) -> TriMesh<T>
[src]
&self,
original_vertex_index_name: Option<&str>,
original_tet_index_name: Option<&str>,
original_tet_vertex_index_name: Option<&str>,
original_tet_face_index_name: Option<&str>
) -> TriMesh<T>
Convert into a mesh of triangles representing the surface of this TetMesh
.
Additionally this function adds attributes that map the new triangle mesh to the original
tetmesh.
Note that if the given attribute name coincides with an existing vertex attribute, that attribute will be replaced with the original tetmesh vertex attribute.
impl<T: Real> TetMesh<T>
[src]
pub const TET_FACES: [[usize; 3]; 4]
[src]
This constant defines the triangle faces of each tet. The rule is that i
th face of the
tet is the one opposite to the i
th vertex. The triangle starts with the smallest index.
pub fn new(verts: Vec<[T; 3]>, indices: Vec<usize>) -> TetMesh<T>
[src]
pub fn cell_iter(&self) -> Iter<[usize; 4]>
[src]
pub fn cell_iter_mut(&mut self) -> IterMut<[usize; 4]>
[src]
pub fn cell<CI: Into<CellIndex>>(&self, cidx: CI) -> &[usize; 4]
[src]
Cell accessor. These are vertex indices.
pub fn cells(&self) -> &[[usize; 4]]
[src]
Return a slice of individual cells.
pub fn tet_iter<'a>(&'a self) -> impl Iterator<Item = Tetrahedron<T>> + 'a
[src]
Tetrahedron iterator.
pub fn tet_from_indices(&self, indices: &[usize; 4]) -> Tetrahedron<T>
[src]
Get a tetrahedron primitive corresponding to the given vertex indices.
pub fn tet<CI: Into<CellIndex>>(&self, cidx: CI) -> Tetrahedron<T>
[src]
Get a tetrahedron primitive corresponding to the given cell index.
pub fn inverted(self) -> TetMesh<T>
[src]
Consumes the current mesh to produce a mesh with inverted tetrahedra.
pub fn invert(&mut self)
[src]
Non consuming verion of the inverted
function which simply modifies the given mesh.
pub fn canonicalized(self) -> TetMesh<T>
[src]
Convert this mesh into canonical form. This function inverts any inverted tetrahedron such
that all tetrahedra are in canonical (non-inverted) form. The canonical form is determined
by the shape matrix determinant of each tetrahedron. Canonical tetrahedra have a positive
shape matrix determinant (see the gut::ops::ShapeMatrix
trait and the
gut::prim::tetrahedron
module).
pub fn canonicalize(&mut self)
[src]
Convert this mesh into canonical form. This function inverts any inverted tetrahedron such
that all tetrahedra are in canonical (non-inverted) form. This is a non-consuming version
of canonicalized
.
Trait Implementations
impl<T: Real> SplitIntoConnectedComponents<VertexCellIndex> for TetMesh<T>
[src]
fn split_into_connected_components(self) -> Vec<Self>
[src]
impl<T: Real> Merge for TetMesh<T>
[src]
fn merge(&mut self, other: Self) -> &mut Self
[src]
Attributes with the same name but different types won't be merged.
fn merge_vec(vec: Vec<Self>) -> Self where
Self: Default,
[src]
Self: Default,
fn merge_slice(slice: &[Self]) -> Self where
Self: Clone + Default,
[src]
Self: Clone + Default,
impl<T: Real> NumVertices for TetMesh<T>
[src]
Define TetMesh
topology
fn num_vertices(&self) -> usize
[src]
impl<T: Real> NumCells for TetMesh<T>
[src]
impl<T: Real> Attrib for TetMesh<T>
[src]
fn attrib_size<I: AttribIndex<Self>>(&self) -> usize
[src]
fn attrib_dict<I: AttribIndex<Self>>(&self) -> &AttribDict<I>
[src]
fn attrib_dict_mut<I: AttribIndex<Self>>(&mut self) -> &mut AttribDict<I>
[src]
fn add_attrib<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
[src]
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
fn add_attrib_data<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
data: Vec<T>
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
[src]
&mut self,
name: &'a str,
data: Vec<T>
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
fn set_attrib<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
[src]
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
fn set_attrib_data<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
data: &[T]
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
[src]
&mut self,
name: &'a str,
data: &[T]
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
fn duplicate_attrib<'a, 'b, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
new_name: &'b str
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
[src]
&mut self,
name: &'a str,
new_name: &'b str
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
fn remove_attrib<'a, I: AttribIndex<Self>>(
&mut self,
name: &'a str
) -> Result<Attribute<I>, Error>
[src]
&mut self,
name: &'a str
) -> Result<Attribute<I>, Error>
fn insert_attrib<'a, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
attrib: Attribute<I>
) -> Result<Option<Attribute<I>>, Error>
[src]
&mut self,
name: &'a str,
attrib: Attribute<I>
) -> Result<Option<Attribute<I>>, Error>
fn attrib_or_add<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
[src]
&mut self,
name: &'a str,
def: T
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone,
fn attrib_or_add_data<'a, T, I: AttribIndex<Self>>(
&mut self,
name: &'a str,
data: &[T]
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
[src]
&mut self,
name: &'a str,
data: &[T]
) -> Result<&mut Attribute<I>, Error> where
T: Any + Clone + Default,
fn attrib_iter<'a, 'b, T, I: 'b + AttribIndex<Self>>(
&'b self,
name: &'a str
) -> Result<Iter<T>, Error> where
T: 'static + Clone,
[src]
&'b self,
name: &'a str
) -> Result<Iter<T>, Error> where
T: 'static + Clone,
fn attrib_iter_mut<'a, 'b, T, I: 'b + AttribIndex<Self>>(
&'b mut self,
name: &'a str
) -> Result<IterMut<T>, Error> where
T: 'static + Clone,
[src]
&'b mut self,
name: &'a str
) -> Result<IterMut<T>, Error> where
T: 'static + Clone,
fn attrib_exists<'a, I: AttribIndex<Self>>(&self, name: &'a str) -> bool
[src]
fn attrib_check<'a, T: Any, I: AttribIndex<Self>>(
&self,
name: &'a str
) -> Result<(), Error>
[src]
&self,
name: &'a str
) -> Result<(), Error>
fn attrib_as_slice<'a, 'b, T: 'static, I: 'b + AttribIndex<Self>>(
&'b self,
name: &'a str
) -> Result<&'b [T], Error>
[src]
&'b self,
name: &'a str
) -> Result<&'b [T], Error>
fn attrib_as_mut_slice<'a, 'b, T: 'static, I: 'b + AttribIndex<Self>>(
&'b mut self,
name: &'a str
) -> Result<&'b mut [T], Error>
[src]
&'b mut self,
name: &'a str
) -> Result<&'b mut [T], Error>
fn attrib_clone_into_vec<'a, 'b, T, I: 'b + AttribIndex<Self>>(
&'b self,
name: &'a str
) -> Result<Vec<T>, Error> where
T: 'static + Clone,
[src]
&'b self,
name: &'a str
) -> Result<Vec<T>, Error> where
T: 'static + Clone,
fn attrib<'a, I: AttribIndex<Self>>(
&self,
name: &'a str
) -> Result<&Attribute<I>, Error>
[src]
&self,
name: &'a str
) -> Result<&Attribute<I>, Error>
fn attrib_mut<'a, I: AttribIndex<Self>>(
&mut self,
name: &'a str
) -> Result<&mut Attribute<I>, Error>
[src]
&mut self,
name: &'a str
) -> Result<&mut Attribute<I>, Error>
impl<T: Real> VertexPositions for TetMesh<T>
[src]
type Element = [T; 3]
fn vertex_positions(&self) -> &[Self::Element]
[src]
fn vertex_positions_mut(&mut self) -> &mut [Self::Element]
[src]
fn vertex_position_iter(&self) -> Iter<Self::Element>
[src]
fn vertex_position_iter_mut(&mut self) -> IterMut<Self::Element>
[src]
fn vertex_position<VI>(&self, vidx: VI) -> Self::Element where
VI: Into<VertexIndex>,
[src]
VI: Into<VertexIndex>,
impl<T: Real> CellVertex for TetMesh<T>
[src]
fn cell_to_vertex<CI>(&self, cidx: CI, which: usize) -> Option<VertexIndex> where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
fn cell_vertex<CI>(&self, cidx: CI, which: usize) -> Option<CellVertexIndex> where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
fn num_cell_vertices(&self) -> usize
[src]
fn num_vertices_at_cell<CI>(&self, _: CI) -> usize where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
fn reverse_topo(&self) -> (Vec<usize>, Vec<usize>) where
Self: NumCells + NumVertices,
[src]
Self: NumCells + NumVertices,
impl<T: Real> CellFace for TetMesh<T>
[src]
fn cell_to_face<CI>(&self, cidx: CI, which: usize) -> Option<FaceIndex> where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
fn cell_face<CI>(&self, cidx: CI, which: usize) -> Option<CellFaceIndex> where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
fn num_cell_faces(&self) -> usize
[src]
fn num_faces_at_cell<CI>(&self, _: CI) -> usize where
CI: Copy + Into<CellIndex>,
[src]
CI: Copy + Into<CellIndex>,
impl<T: Real> VertexAttrib for TetMesh<T>
[src]
fn impl_attrib_size(&self) -> usize
[src]
fn impl_attrib_dict(&self) -> &AttribDict<VertexIndex>
[src]
fn impl_attrib_dict_mut(&mut self) -> &mut AttribDict<VertexIndex>
[src]
impl<T: Real> CellAttrib for TetMesh<T>
[src]
fn impl_attrib_size(&self) -> usize
[src]
fn impl_attrib_dict(&self) -> &AttribDict<CellIndex>
[src]
fn impl_attrib_dict_mut(&mut self) -> &mut AttribDict<CellIndex>
[src]
impl<T: Real> CellVertexAttrib for TetMesh<T>
[src]
fn impl_attrib_size(&self) -> usize
[src]
fn impl_attrib_dict(&self) -> &AttribDict<CellVertexIndex>
[src]
fn impl_attrib_dict_mut(&mut self) -> &mut AttribDict<CellVertexIndex>
[src]
impl<T: Real> CellFaceAttrib for TetMesh<T>
[src]
fn impl_attrib_size(&self) -> usize
[src]
fn impl_attrib_dict(&self) -> &AttribDict<CellFaceIndex>
[src]
fn impl_attrib_dict_mut(&mut self) -> &mut AttribDict<CellFaceIndex>
[src]
impl<T: Real> From<TetMesh<T>> for PointCloud<T>
[src]
Convert a tet mesh to a point cloud by erasing all tet data.
fn from(mesh: TetMesh<T>) -> PointCloud<T>
[src]
impl<T: Real> From<TetMesh<T>> for TriMesh<T>
[src]
impl<T: Real> From<TetMesh<T>> for PolyMesh<T>
[src]
impl<T: Real> From<TetMesh<T>> for TetMeshExt<T>
[src]
fn from(tetmesh: TetMesh<T>) -> TetMeshExt<T>
[src]
impl<T: Real> From<TetMeshExt<T>> for TetMesh<T>
[src]
fn from(ext: TetMeshExt<T>) -> TetMesh<T>
[src]
impl<T: Clone + Real> Clone for TetMesh<T>
[src]
impl<T: Real> Default for TetMesh<T>
[src]
fn default() -> Self
[src]
Produce an empty TetMesh
. 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<TetMesh<T>> for TetMesh<T>
[src]
impl<T: Debug + Real> Debug for TetMesh<T>
[src]
impl<T: Real> StructuralPartialEq for TetMesh<T>
[src]
Auto Trait Implementations
impl<T> Send for TetMesh<T>
impl<T> Sync for TetMesh<T>
impl<T> Unpin for TetMesh<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for TetMesh<T> where
T: UnwindSafe,
T: UnwindSafe,
impl<T> RefUnwindSafe for TetMesh<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
Blanket Implementations
impl<T, M> Scale<T> for M where
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
[src]
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
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.
fn uniform_scale(&mut self, s: T)
[src]
impl<T, M> Rotate<T> for M where
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
[src]
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
fn rotate_by_matrix(&mut Self, [[T; 3]; 3])
[src]
Rotate the mesh using the given column-major rotation matrix.
fn rotate(&mut self, [x, y, z]: [T; 3], theta: T)
[src]
fn rotate_by_vector(&mut self, e: [T; 3]) where
T: Zero,
[src]
T: Zero,
impl<T, M> Translate<T> for M where
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
[src]
M: VertexPositions<Element = [T; 3]>,
T: BaseFloat,
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]
S: Scale<T>,
T: Copy,
impl<S, T> Rotated<T> for S where
S: Rotate<T>,
T: BaseFloat,
[src]
S: Rotate<T>,
T: BaseFloat,
fn rotated(Self, [T; 3], T) -> S
[src]
fn rotated_by_matrix(Self, [[T; 3]; 3]) -> S
[src]
fn rotated_by_vector(Self, [T; 3]) -> S
[src]
impl<S, T> Translated<T> for S where
S: Translate<T>,
[src]
S: Translate<T>,
fn translated(Self, [T; 3]) -> S
[src]
impl<M, T> BoundingBox<T> for M where
M: VertexPositions<Element = [T; 3]>,
T: Real,
[src]
M: VertexPositions<Element = [T; 3]>,
T: Real,
fn bounding_box(&Self) -> BBox<T>
[src]
Compute the bounding box of this object.
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]
M: Attrib + VertexAttrib + NumVertices + VertexPositions<Element = [T; 3]>,
T: Real,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,