pub struct HeightField { /* private fields */ }Expand description
A 3D heightfield.
Implementations§
Source§impl HeightField
impl HeightField
Source§impl HeightField
impl HeightField
Sourcepub fn bounding_sphere(&self, pos: &Pose) -> BoundingSphere
pub fn bounding_sphere(&self, pos: &Pose) -> BoundingSphere
Computes the world-space bounding sphere of this height-field, transformed by pos.
Sourcepub fn local_bounding_sphere(&self) -> BoundingSphere
pub fn local_bounding_sphere(&self) -> BoundingSphere
Computes the local-space bounding sphere of this height-field.
Source§impl HeightField
impl HeightField
Sourcepub fn new(heights_zx: Array2<f32>, scale: Vector) -> Self
pub fn new(heights_zx: Array2<f32>, scale: Vector) -> Self
Initializes a new heightfield with the given heights, scaling factor, and flags.
The heights are specified in such a way that the row index i of the array advances
grid coordinates along the z axis, and the column index j of the array advances
grid coordinates along the x axis.
Sourcepub fn with_flags(
heights_zx: Array2<f32>,
scale: Vector,
flags: HeightFieldFlags,
) -> Self
pub fn with_flags( heights_zx: Array2<f32>, scale: Vector, flags: HeightFieldFlags, ) -> Self
Initializes a new heightfield with the given heights and a scaling factor.
Source§impl HeightField
impl HeightField
Sourcepub fn closest_cell_at_point(&self, pt: Vector) -> (usize, usize)
pub fn closest_cell_at_point(&self, pt: Vector) -> (usize, usize)
The pair of index of the cell containing the vertical projection of the given point.
Sourcepub fn cell_at_point(&self, pt: Vector) -> Option<(usize, usize)>
pub fn cell_at_point(&self, pt: Vector) -> Option<(usize, usize)>
The pair of index of the cell containing the vertical projection of the given point.
Sourcepub fn unclamped_cell_at_point(&self, pt: Vector) -> (isize, isize)
pub fn unclamped_cell_at_point(&self, pt: Vector) -> (isize, isize)
The pair of index of the cell containing the vertical projection of the given point.
Sourcepub fn x_at(&self, j: usize) -> f32
pub fn x_at(&self, j: usize) -> f32
The smallest x coordinate of the j-th column of this heightfield.
Sourcepub fn z_at(&self, i: usize) -> f32
pub fn z_at(&self, i: usize) -> f32
The smallest z coordinate of the start of the i-th row of this heightfield.
Sourcepub fn signed_x_at(&self, j: isize) -> f32
pub fn signed_x_at(&self, j: isize) -> f32
The smallest x coordinate of the j-th column of this heightfield.
Sourcepub fn signed_z_at(&self, i: isize) -> f32
pub fn signed_z_at(&self, i: isize) -> f32
The smallest z coordinate of the start of the i-th row of this heightfield.
Sourcepub fn triangles(&self) -> impl Iterator<Item = Triangle> + '_
pub fn triangles(&self) -> impl Iterator<Item = Triangle> + '_
An iterator through all the triangles of this heightfield.
Sourcepub fn triangles_around_point(
&self,
point: Vector,
) -> HeightFieldRadialTriangles<'_>
pub fn triangles_around_point( &self, point: Vector, ) -> HeightFieldRadialTriangles<'_>
An iterator through all the triangles around the given point, after vertical projection on the heightfield.
Sourcepub fn triangle_at_id(&self, id: u32) -> Option<Triangle>
pub fn triangle_at_id(&self, id: u32) -> Option<Triangle>
Gets the vertices of the triangle identified by id.
Sourcepub fn triangle_vids_at_id(&self, id: u32) -> Option<[u32; 3]>
pub fn triangle_vids_at_id(&self, id: u32) -> Option<[u32; 3]>
Gets the vertex indices of the triangle identified by id.
Sourcepub fn triangles_vids_at(
&self,
i: usize,
j: usize,
) -> (Option<[u32; 3]>, Option<[u32; 3]>)
pub fn triangles_vids_at( &self, i: usize, j: usize, ) -> (Option<[u32; 3]>, Option<[u32; 3]>)
Gets the indices of the vertices of the (up to) two triangles for the cell (i, j).
Sourcepub fn triangles_at(
&self,
i: usize,
j: usize,
) -> (Option<Triangle>, Option<Triangle>)
pub fn triangles_at( &self, i: usize, j: usize, ) -> (Option<Triangle>, Option<Triangle>)
The two triangles at the cell (i, j) of this heightfield.
Returns None fore triangles that have been removed because of their user-defined status
flags (described by the HeightFieldCellStatus bitfield).
Sourcepub fn triangle_normal_constraints(
&self,
id: u32,
) -> Option<TrianglePseudoNormals>
pub fn triangle_normal_constraints( &self, id: u32, ) -> Option<TrianglePseudoNormals>
Computes the pseudo-normals of the triangle identified by the given id.
Returns None if the heightfield’s HeightFieldFlags::FIX_INTERNAL_EDGES isn’t set, or
if the triangle doesn’t exist due to it being removed by its status flag
(HeightFieldCellStatus::LEFT_TRIANGLE_REMOVED or
HeightFieldCellStatus::RIGHT_TRIANGLE_REMOVED).
Sourcepub fn num_cells_ij(&self) -> (usize, usize)
pub fn num_cells_ij(&self) -> (usize, usize)
The number of cells of this heightfield along each dimension.
Sourcepub fn cell_status(&self, i: usize, j: usize) -> HeightFieldCellStatus
pub fn cell_status(&self, i: usize, j: usize) -> HeightFieldCellStatus
The status of the (i, j)-th cell.
Sourcepub fn set_cell_status(
&mut self,
i: usize,
j: usize,
status: HeightFieldCellStatus,
)
pub fn set_cell_status( &mut self, i: usize, j: usize, status: HeightFieldCellStatus, )
Set the status of the (i, j)-th cell.
Sourcepub fn cells_statuses(&self) -> &Array2<HeightFieldCellStatus>
pub fn cells_statuses(&self) -> &Array2<HeightFieldCellStatus>
The statuses of all the cells of this heightfield.
Sourcepub fn cells_statuses_mut(&mut self) -> &mut Array2<HeightFieldCellStatus>
pub fn cells_statuses_mut(&mut self) -> &mut Array2<HeightFieldCellStatus>
The mutable statuses of all the cells of this heightfield.
Sourcepub fn flags(&self) -> HeightFieldFlags
pub fn flags(&self) -> HeightFieldFlags
The heightfield’s flags controlling internal-edges handling.
Sourcepub fn set_flags(&mut self, flags: HeightFieldFlags)
pub fn set_flags(&mut self, flags: HeightFieldFlags)
Sets the heightfield’s flags controlling internal-edges handling.
Sourcepub fn set_scale(&mut self, new_scale: Vector)
pub fn set_scale(&mut self, new_scale: Vector)
Sets the scale factor applied to this heightfield.
Sourcepub fn cell_width(&self) -> f32
pub fn cell_width(&self) -> f32
The width (extent along its local x axis) of each cell of this heightmap, including the scale factor.
Sourcepub fn cell_height(&self) -> f32
pub fn cell_height(&self) -> f32
The height (extent along its local z axis) of each cell of this heightmap, including the scale factor.
Sourcepub fn unit_cell_width(&self) -> f32
pub fn unit_cell_width(&self) -> f32
The width (extent along its local x axis) of each cell of this heightmap, excluding the scale factor.
Sourcepub fn unit_cell_height(&self) -> f32
pub fn unit_cell_height(&self) -> f32
The height (extent along its local z axis) of each cell of this heightmap, excluding the scale factor.
Sourcepub fn convert_triangle_feature_id(
&self,
i: usize,
j: usize,
left: bool,
fid: FeatureId,
) -> FeatureId
pub fn convert_triangle_feature_id( &self, i: usize, j: usize, left: bool, fid: FeatureId, ) -> FeatureId
Converts the FeatureID of the left or right triangle at the cell (i, j) into a FeatureId
of the whole heightfield.
Source§impl HeightField
impl HeightField
Trait Implementations§
Source§impl Clone for HeightField
impl Clone for HeightField
Source§fn clone(&self) -> HeightField
fn clone(&self) -> HeightField
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HeightField
impl Debug for HeightField
Source§impl From<HeightField> for TriMesh
Available on crate feature dim3 only.
impl From<HeightField> for TriMesh
dim3 only.Source§fn from(heightfield: HeightField) -> Self
fn from(heightfield: HeightField) -> Self
Source§impl PointQuery for HeightField
impl PointQuery for HeightField
Source§fn project_local_point_with_max_dist(
&self,
pt: Vector,
solid: bool,
max_dist: f32,
) -> Option<PointProjection>
fn project_local_point_with_max_dist( &self, pt: Vector, solid: bool, max_dist: f32, ) -> Option<PointProjection>
Source§fn project_local_point(&self, point: Vector, _: bool) -> PointProjection
fn project_local_point(&self, point: Vector, _: bool) -> PointProjection
self. Read moreSource§fn project_local_point_and_get_feature(
&self,
point: Vector,
) -> (PointProjection, FeatureId)
fn project_local_point_and_get_feature( &self, point: Vector, ) -> (PointProjection, FeatureId)
self and returns the id of the
feature the point was projected on.Source§fn contains_local_point(&self, _point: Vector) -> bool
fn contains_local_point(&self, _point: Vector) -> bool
self.Source§fn project_point_with_max_dist(
&self,
m: &Pose,
pt: Vector,
solid: bool,
max_dist: f32,
) -> Option<PointProjection>
fn project_point_with_max_dist( &self, m: &Pose, pt: Vector, solid: bool, max_dist: f32, ) -> Option<PointProjection>
self transformed by m, unless the projection lies further than the given max distance.Source§fn distance_to_local_point(&self, pt: Vector, solid: bool) -> f32
fn distance_to_local_point(&self, pt: Vector, solid: bool) -> f32
self.Source§fn project_point(&self, m: &Pose, pt: Vector, solid: bool) -> PointProjection
fn project_point(&self, m: &Pose, pt: Vector, solid: bool) -> PointProjection
self transformed by m.Source§fn distance_to_point(&self, m: &Pose, pt: Vector, solid: bool) -> f32
fn distance_to_point(&self, m: &Pose, pt: Vector, solid: bool) -> f32
self transformed by m.Source§fn project_point_and_get_feature(
&self,
m: &Pose,
pt: Vector,
) -> (PointProjection, FeatureId)
fn project_point_and_get_feature( &self, m: &Pose, pt: Vector, ) -> (PointProjection, FeatureId)
self transformed by m and returns the id of the
feature the point was projected on.Source§impl PointQueryWithLocation for HeightField
impl PointQueryWithLocation for HeightField
Source§type Location = (usize, TrianglePointLocation)
type Location = (usize, TrianglePointLocation)
Source§fn project_local_point_and_get_location(
&self,
_point: Vector,
_: bool,
) -> (PointProjection, Self::Location)
fn project_local_point_and_get_location( &self, _point: Vector, _: bool, ) -> (PointProjection, Self::Location)
self.Source§fn project_point_and_get_location(
&self,
m: &Pose,
pt: Vector,
solid: bool,
) -> (PointProjection, Self::Location)
fn project_point_and_get_location( &self, m: &Pose, pt: Vector, solid: bool, ) -> (PointProjection, Self::Location)
self transformed by m.Source§fn project_local_point_and_get_location_with_max_dist(
&self,
pt: Vector,
solid: bool,
max_dist: f32,
) -> Option<(PointProjection, Self::Location)>
fn project_local_point_and_get_location_with_max_dist( &self, pt: Vector, solid: bool, max_dist: f32, ) -> Option<(PointProjection, Self::Location)>
self, with a maximum projection distance.Source§fn project_point_and_get_location_with_max_dist(
&self,
m: &Pose,
pt: Vector,
solid: bool,
max_dist: f32,
) -> Option<(PointProjection, Self::Location)>
fn project_point_and_get_location_with_max_dist( &self, m: &Pose, pt: Vector, solid: bool, max_dist: f32, ) -> Option<(PointProjection, Self::Location)>
self transformed by m, with a maximum projection distance.Source§impl RayCast for HeightField
Available on crate feature dim3 only.
impl RayCast for HeightField
dim3 only.Source§fn cast_local_ray_and_get_normal(
&self,
ray: &Ray,
max_time_of_impact: f32,
solid: bool,
) -> Option<RayIntersection>
fn cast_local_ray_and_get_normal( &self, ray: &Ray, max_time_of_impact: f32, solid: bool, ) -> Option<RayIntersection>
Source§fn cast_local_ray(
&self,
ray: &Ray,
max_time_of_impact: f32,
solid: bool,
) -> Option<f32>
fn cast_local_ray( &self, ray: &Ray, max_time_of_impact: f32, solid: bool, ) -> Option<f32>
Source§fn intersects_local_ray(&self, ray: &Ray, max_time_of_impact: f32) -> bool
fn intersects_local_ray(&self, ray: &Ray, max_time_of_impact: f32) -> bool
Source§fn cast_ray(
&self,
m: &Pose,
ray: &Ray,
max_time_of_impact: f32,
solid: bool,
) -> Option<f32>
fn cast_ray( &self, m: &Pose, ray: &Ray, max_time_of_impact: f32, solid: bool, ) -> Option<f32>
Source§fn cast_ray_and_get_normal(
&self,
m: &Pose,
ray: &Ray,
max_time_of_impact: f32,
solid: bool,
) -> Option<RayIntersection>
fn cast_ray_and_get_normal( &self, m: &Pose, ray: &Ray, max_time_of_impact: f32, solid: bool, ) -> Option<RayIntersection>
Source§impl Shape for HeightField
Available on crate feature alloc only.
impl Shape for HeightField
alloc only.Source§fn scale_dyn(
&self,
scale: Vector,
_num_subdivisions: u32,
) -> Option<Box<dyn Shape>>
fn scale_dyn( &self, scale: Vector, _num_subdivisions: u32, ) -> Option<Box<dyn Shape>>
scale into a boxed trait-object. Read moreSource§fn compute_local_aabb(&self) -> Aabb
fn compute_local_aabb(&self) -> Aabb
Aabb of this shape.Source§fn compute_local_bounding_sphere(&self) -> BoundingSphere
fn compute_local_bounding_sphere(&self) -> BoundingSphere
Source§fn compute_aabb(&self, position: &Pose) -> Aabb
fn compute_aabb(&self, position: &Pose) -> Aabb
Aabb of this shape with the given position.Source§fn mass_properties(&self, _density: f32) -> MassProperties
fn mass_properties(&self, _density: f32) -> MassProperties
Source§fn shape_type(&self) -> ShapeType
fn shape_type(&self) -> ShapeType
Source§fn as_typed_shape(&self) -> TypedShape<'_>
fn as_typed_shape(&self) -> TypedShape<'_>
fn ccd_thickness(&self) -> f32
fn ccd_angular_thickness(&self) -> f32
Source§fn clone_box(&self) -> Box<dyn Shape>
fn clone_box(&self) -> Box<dyn Shape>
renamed to clone_dyn
Source§fn compute_bounding_sphere(&self, position: &Pose) -> BoundingSphere
fn compute_bounding_sphere(&self, position: &Pose) -> BoundingSphere
Source§fn as_support_map(&self) -> Option<&dyn SupportMap>
fn as_support_map(&self) -> Option<&dyn SupportMap>
fn as_composite_shape(&self) -> Option<&dyn CompositeShape>
Source§fn as_polygonal_feature_map(&self) -> Option<(&dyn PolygonalFeatureMap, f32)>
fn as_polygonal_feature_map(&self) -> Option<(&dyn PolygonalFeatureMap, f32)>
Auto Trait Implementations§
impl Freeze for HeightField
impl RefUnwindSafe for HeightField
impl Send for HeightField
impl Sync for HeightField
impl Unpin for HeightField
impl UnsafeUnpin for HeightField
impl UnwindSafe for HeightField
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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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 moreSource§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.