pub struct TriMesh<N: RealField + Copy> { /* private fields */ }Expand description
A 3d triangle mesh.
Implementations§
Source§impl<N: RealField + Copy> TriMesh<N>
impl<N: RealField + Copy> TriMesh<N>
Sourcepub fn new(
points: Vec<Point<N>>,
indices: Vec<Point3<usize>>,
uvs: Option<Vec<Point2<N>>>,
) -> TriMesh<N>
pub fn new( points: Vec<Point<N>>, indices: Vec<Point3<usize>>, uvs: Option<Vec<Point2<N>>>, ) -> TriMesh<N>
Builds a new mesh.
Sourcepub fn faces(&self) -> &[TriMeshFace<N>]
pub fn faces(&self) -> &[TriMeshFace<N>]
The faces of this mesh.
Sourcepub fn edges(&self) -> &[TriMeshEdge]
pub fn edges(&self) -> &[TriMeshEdge]
The edges of this mesh.
Sourcepub fn vertices(&self) -> &[TriMeshVertex]
pub fn vertices(&self) -> &[TriMeshVertex]
The vertices of this mesh.
Sourcepub fn transform_by(&mut self, transform: &Isometry<N>)
pub fn transform_by(&mut self, transform: &Isometry<N>)
Applies in-place a transformation to this triangle mesh.
Sourcepub fn transformed(self, transform: &Isometry<N>) -> Self
pub fn transformed(self, transform: &Isometry<N>) -> Self
Applies a transformation to this triangle mesh.
Sourcepub fn scale_by(&mut self, scale: &Vector<N>)
pub fn scale_by(&mut self, scale: &Vector<N>)
Applies in-place a non-uniform scale to this triangle mesh.
Sourcepub fn scaled(self, scale: &Vector<N>) -> Self
pub fn scaled(self, scale: &Vector<N>) -> Self
Applies a non-uniform scale to this triangle mesh.
Sourcepub fn oriented(&self) -> bool
pub fn oriented(&self) -> bool
Whether this trimesh is considered is oriented or not.
By default a trimesh is not oriented.
Sourcepub fn set_oriented(&mut self, oriented: bool)
pub fn set_oriented(&mut self, oriented: bool)
Whether this trimesh is considered as oriented or not.
This is determined at the initialization of the trimesh.
Sourcepub fn face_containing_feature(&self, id: FeatureId) -> usize
pub fn face_containing_feature(&self, id: FeatureId) -> usize
Face containing feature.
Sourcepub fn edge_segment(&self, i: usize) -> Segment<N>
pub fn edge_segment(&self, i: usize) -> Segment<N>
The segment of the i-th edge on this triangle mesh.
Sourcepub fn adj_vertex_list(&self) -> &[usize]
pub fn adj_vertex_list(&self) -> &[usize]
The adjacent vertices list of this mesh.
Use TriMeshVertex.adj_vertices to index this. Elements are indexes into the vertices list.
Sourcepub fn adj_face_list(&self) -> &[usize]
pub fn adj_face_list(&self) -> &[usize]
The adjacent vertices list of this mesh.
Use TriMeshVertex.adj_faces to index this. Elements are indexes into the faces list.
Sourcepub fn triangle_at(&self, i: usize) -> Triangle<N>
pub fn triangle_at(&self, i: usize) -> Triangle<N>
Gets the i-th mesh element.
Sourcepub fn is_backface(&self, feature: FeatureId) -> bool
pub fn is_backface(&self, feature: FeatureId) -> bool
Returns true if the given feature is a FeatureId::Face and
identifies a backface of this trimesh.
Sourcepub fn bvt(&self) -> &BVT<usize, AABB<N>>
pub fn bvt(&self) -> &BVT<usize, AABB<N>>
The optimization structure used by this triangle mesh.
Sourcepub fn vertex_tangent_cone_contains_dir(
&self,
i: usize,
deformations: Option<&[N]>,
dir: &Unit<Vector<N>>,
) -> bool
pub fn vertex_tangent_cone_contains_dir( &self, i: usize, deformations: Option<&[N]>, dir: &Unit<Vector<N>>, ) -> bool
Tests that the given dir is on the tangent cone of the ith vertex
of this mesh.
Sourcepub fn vertex_tangent_cone_polar_contains_dir(
&self,
i: usize,
dir: &Unit<Vector<N>>,
sin_ang_tol: N,
) -> bool
pub fn vertex_tangent_cone_polar_contains_dir( &self, i: usize, dir: &Unit<Vector<N>>, sin_ang_tol: N, ) -> bool
Tests that the given dir is on the polar of the tangent cone of the ith vertex
of this mesh.
Sourcepub fn edge_tangent_cone_contains_dir(
&self,
i: usize,
deformations: Option<&[N]>,
dir: &Unit<Vector<N>>,
) -> bool
pub fn edge_tangent_cone_contains_dir( &self, i: usize, deformations: Option<&[N]>, dir: &Unit<Vector<N>>, ) -> bool
Tests that the given dir is on the tangent cone of the ith edge
of this mesh.
Sourcepub fn edge_tangent_cone_polar_contains_orthogonal_dir(
&self,
i: usize,
dir: &Unit<Vector<N>>,
sin_ang_tol: N,
) -> bool
pub fn edge_tangent_cone_polar_contains_orthogonal_dir( &self, i: usize, dir: &Unit<Vector<N>>, sin_ang_tol: N, ) -> bool
Tests that the given dir is on the polar of the tangent cone of the ith edge
of this mesh.
The dir is assumed to be orthogonal to the edge.
Sourcepub fn edge_tangent_cone_polar_contains_dir(
&self,
i: usize,
dir: &Unit<Vector<N>>,
sin_ang_tol: N,
_cos_ang_tol: N,
) -> bool
pub fn edge_tangent_cone_polar_contains_dir( &self, i: usize, dir: &Unit<Vector<N>>, sin_ang_tol: N, _cos_ang_tol: N, ) -> bool
Tests that the given dir is on the polar of the tangent cone of the ith edge
of this mesh.
Sourcepub fn face_tangent_cone_contains_dir(
&self,
i: usize,
deformations: Option<&[N]>,
dir: &Unit<Vector<N>>,
) -> bool
pub fn face_tangent_cone_contains_dir( &self, i: usize, deformations: Option<&[N]>, dir: &Unit<Vector<N>>, ) -> bool
Tests that the given dir is on the tangent cone of the ith face
of this mesh.
Trait Implementations§
Source§impl<N: RealField + Copy> CompositeShape<N> for TriMesh<N>
impl<N: RealField + Copy> CompositeShape<N> for TriMesh<N>
Source§fn map_part_at(
&self,
i: usize,
m: &Isometry<N>,
f: &mut dyn FnMut(&Isometry<N>, &dyn Shape<N>),
)
fn map_part_at( &self, i: usize, m: &Isometry<N>, f: &mut dyn FnMut(&Isometry<N>, &dyn Shape<N>), )
Source§fn map_part_and_preprocessor_at(
&self,
i: usize,
m: &Isometry<N>,
prediction: &ContactPrediction<N>,
f: &mut dyn FnMut(&Isometry<N>, &dyn Shape<N>, &dyn ContactPreprocessor<N>),
)
fn map_part_and_preprocessor_at( &self, i: usize, m: &Isometry<N>, prediction: &ContactPrediction<N>, f: &mut dyn FnMut(&Isometry<N>, &dyn Shape<N>, &dyn ContactPreprocessor<N>), )
Source§impl<N: RealField + Copy> DeformableShape<N> for TriMesh<N>
impl<N: RealField + Copy> DeformableShape<N> for TriMesh<N>
Source§fn set_deformations(&mut self, coords: &[N])
fn set_deformations(&mut self, coords: &[N])
Updates all the degrees of freedom of this shape.
Source§fn deformations_type(&self) -> DeformationsType
fn deformations_type(&self) -> DeformationsType
Source§fn update_local_approximation(
&self,
coords: &[N],
approx: &mut LocalShapeApproximation<N>,
)
fn update_local_approximation( &self, coords: &[N], approx: &mut LocalShapeApproximation<N>, )
Source§impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for TriMesh<N>
impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for TriMesh<N>
Source§fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N>
fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N>
self transformed by m.Source§fn local_bounding_volume(&self) -> AABB<N>
fn local_bounding_volume(&self) -> AABB<N>
self.Source§impl<N: RealField + Copy> HasBoundingVolume<N, BoundingSphere<N>> for TriMesh<N>
impl<N: RealField + Copy> HasBoundingVolume<N, BoundingSphere<N>> for TriMesh<N>
Source§fn bounding_volume(&self, m: &Isometry<N>) -> BoundingSphere<N>
fn bounding_volume(&self, m: &Isometry<N>) -> BoundingSphere<N>
self transformed by m.Source§fn local_bounding_volume(&self) -> BoundingSphere<N>
fn local_bounding_volume(&self) -> BoundingSphere<N>
self.Source§impl<N: RealField + Copy> PointQuery<N> for TriMesh<N>
impl<N: RealField + Copy> PointQuery<N> for TriMesh<N>
Source§fn project_point(
&self,
m: &Isometry<N>,
point: &Point<N>,
solid: bool,
) -> PointProjection<N>
fn project_point( &self, m: &Isometry<N>, point: &Point<N>, solid: bool, ) -> PointProjection<N>
self transformed by m.Source§fn project_point_with_feature(
&self,
m: &Isometry<N>,
point: &Point<N>,
) -> (PointProjection<N>, FeatureId)
fn project_point_with_feature( &self, m: &Isometry<N>, point: &Point<N>, ) -> (PointProjection<N>, FeatureId)
self transformed by m and retuns the id of the
feature the point was projected on.Source§impl<N: RealField + Copy> PointQueryWithLocation<N> for TriMesh<N>
impl<N: RealField + Copy> PointQueryWithLocation<N> for TriMesh<N>
Source§type Location = (usize, TrianglePointLocation<N>)
type Location = (usize, TrianglePointLocation<N>)
Source§fn project_point_with_location(
&self,
m: &Isometry<N>,
point: &Point<N>,
_: bool,
) -> (PointProjection<N>, Self::Location)
fn project_point_with_location( &self, m: &Isometry<N>, point: &Point<N>, _: bool, ) -> (PointProjection<N>, Self::Location)
self transformed by m.Source§impl<N: RealField + Copy> RayCast<N> for TriMesh<N>
impl<N: RealField + Copy> RayCast<N> for TriMesh<N>
Source§fn toi_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
_: bool,
) -> Option<N>
fn toi_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, _: bool, ) -> Option<N>
Source§fn toi_and_normal_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
_: bool,
) -> Option<RayIntersection<N>>
fn toi_and_normal_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, _: bool, ) -> Option<RayIntersection<N>>
Source§fn toi_and_normal_and_uv_with_ray(
&self,
m: &Isometry<N>,
ray: &Ray<N>,
max_toi: N,
solid: bool,
) -> Option<RayIntersection<N>>
fn toi_and_normal_and_uv_with_ray( &self, m: &Isometry<N>, ray: &Ray<N>, max_toi: N, solid: bool, ) -> Option<RayIntersection<N>>
Source§impl<N: RealField + Copy> Shape<N> for TriMesh<N>
impl<N: RealField + Copy> Shape<N> for TriMesh<N>
Source§fn local_aabb(&self) -> AABB<N>
fn local_aabb(&self) -> AABB<N>
self.Source§fn bounding_sphere(&self, m: &Isometry<N>) -> BoundingSphere<N>
fn bounding_sphere(&self, m: &Isometry<N>) -> BoundingSphere<N>
self transformed by m.Source§fn as_ray_cast(&self) -> Option<&dyn RayCast<N>>
fn as_ray_cast(&self) -> Option<&dyn RayCast<N>>
RayCast implementation of self.Source§fn as_point_query(&self) -> Option<&dyn PointQuery<N>>
fn as_point_query(&self) -> Option<&dyn PointQuery<N>>
PointQuery implementation of self.Source§fn as_composite_shape(&self) -> Option<&dyn CompositeShape<N>>
fn as_composite_shape(&self) -> Option<&dyn CompositeShape<N>>
self if applicable.Source§fn is_composite_shape(&self) -> bool
fn is_composite_shape(&self) -> bool
self uses a composite shape-based representation.Source§fn as_deformable_shape(&self) -> Option<&dyn DeformableShape<N>>
fn as_deformable_shape(&self) -> Option<&dyn DeformableShape<N>>
self if applicable.Source§fn as_deformable_shape_mut(&mut self) -> Option<&mut dyn DeformableShape<N>>
fn as_deformable_shape_mut(&mut self) -> Option<&mut dyn DeformableShape<N>>
self if applicable.Source§fn is_deformable_shape(&self) -> bool
fn is_deformable_shape(&self) -> bool
self uses a composite shape-based representation.Source§fn tangent_cone_contains_dir(
&self,
fid: FeatureId,
m: &Isometry<N>,
deformations: Option<&[N]>,
dir: &Unit<Vector<N>>,
) -> bool
fn tangent_cone_contains_dir( &self, fid: FeatureId, m: &Isometry<N>, deformations: Option<&[N]>, dir: &Unit<Vector<N>>, ) -> bool
_feature of the i-th subshape of self transformed by m has a tangent
cone that contains dir at the point pt.Source§fn subshape_containing_feature(&self, id: FeatureId) -> usize
fn subshape_containing_feature(&self, id: FeatureId) -> usize
Source§fn local_bounding_sphere(&self) -> BoundingSphere<N>
fn local_bounding_sphere(&self) -> BoundingSphere<N>
self.Source§fn as_convex_polyhedron(&self) -> Option<&dyn ConvexPolyhedron<N>>
fn as_convex_polyhedron(&self) -> Option<&dyn ConvexPolyhedron<N>>
self if applicable.Source§fn as_support_map(&self) -> Option<&dyn SupportMap<N>>
fn as_support_map(&self) -> Option<&dyn SupportMap<N>>
self if applicable.Source§fn is_convex_polyhedron(&self) -> bool
fn is_convex_polyhedron(&self) -> bool
self uses a convex polyhedron representation.Source§fn is_support_map(&self) -> bool
fn is_support_map(&self) -> bool
self uses a support-mapping based representation.Auto Trait Implementations§
impl<N> Freeze for TriMesh<N>where
N: Freeze,
impl<N> RefUnwindSafe for TriMesh<N>where
N: RefUnwindSafe,
impl<N> Send for TriMesh<N>
impl<N> Sync for TriMesh<N>
impl<N> Unpin for TriMesh<N>where
N: Unpin,
impl<N> UnwindSafe for TriMesh<N>where
N: UnwindSafe,
Blanket Implementations§
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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.