pub struct Extrusion<T: Primitive2d> {
pub base_shape: T,
pub half_depth: f32,
}
Expand description
A 3D shape representing an extruded 2D base_shape
.
Extruding a shape effectively “thickens” a 2D shapes, creating a shape with the same cross-section over the entire depth.
The resulting volumes are prisms. For example, a triangle becomes a triangular prism, while a circle becomes a cylinder.
Fields§
§base_shape: T
The base shape of the extrusion
half_depth: f32
Half of the depth of the extrusion
Implementations§
Trait Implementations§
Source§impl<T: BoundedExtrusion> Bounded3d for Extrusion<T>
impl<T: BoundedExtrusion> Bounded3d for Extrusion<T>
Source§fn aabb_3d(&self, translation: Vec3, rotation: Quat) -> Aabb3d
fn aabb_3d(&self, translation: Vec3, rotation: Quat) -> Aabb3d
Get an axis-aligned bounding box for the shape with the given translation and rotation
Source§fn bounding_sphere(&self, translation: Vec3, rotation: Quat) -> BoundingSphere
fn bounding_sphere(&self, translation: Vec3, rotation: Quat) -> BoundingSphere
Get a bounding sphere for the shape with the given translation and rotation
Source§impl<'de, T> Deserialize<'de> for Extrusion<T>where
T: Deserialize<'de> + Primitive2d,
impl<'de, T> Deserialize<'de> for Extrusion<T>where
T: Deserialize<'de> + Primitive2d,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<T: Primitive2d + Measured2d> Measured3d for Extrusion<T>
impl<T: Primitive2d + Measured2d> Measured3d for Extrusion<T>
Source§impl<P: Primitive2d + Measured2d + ShapeSample<Output = Vec2>> ShapeSample for Extrusion<P>
Available on crate feature rand
only.
impl<P: Primitive2d + Measured2d + ShapeSample<Output = Vec2>> ShapeSample for Extrusion<P>
Available on crate feature
rand
only.Source§fn sample_interior<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::Output
fn sample_interior<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::Output
Uniformly sample a point from inside the area/volume of this shape, centered on 0. Read more
Source§fn sample_boundary<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::Output
fn sample_boundary<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::Output
Uniformly sample a point from the surface of this shape, centered on 0. Read more
Source§fn interior_dist(self) -> impl Distribution<Self::Output>where
Self: Sized,
fn interior_dist(self) -> impl Distribution<Self::Output>where
Self: Sized,
Extract a
Distribution
whose samples are points of this shape’s interior, taken uniformly. Read moreSource§fn boundary_dist(self) -> impl Distribution<Self::Output>where
Self: Sized,
fn boundary_dist(self) -> impl Distribution<Self::Output>where
Self: Sized,
Extract a
Distribution
whose samples are points of this shape’s boundary, taken uniformly. Read moreimpl<T: Copy + Primitive2d> Copy for Extrusion<T>
impl<T: Primitive2d> Primitive3d for Extrusion<T>
impl<T: Primitive2d> StructuralPartialEq for Extrusion<T>
Auto Trait Implementations§
impl<T> Freeze for Extrusion<T>where
T: Freeze,
impl<T> RefUnwindSafe for Extrusion<T>where
T: RefUnwindSafe,
impl<T> Send for Extrusion<T>where
T: Send,
impl<T> Sync for Extrusion<T>where
T: Sync,
impl<T> Unpin for Extrusion<T>where
T: Unpin,
impl<T> UnwindSafe for Extrusion<T>where
T: 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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.