pub struct HalfSpace { /* private fields */ }
Expand description
A region of 3D space, specifically an open set whose border is a bisecting 2D plane. This bisecting plane partitions 3D space into two infinite regions, the half-space is one of those regions and excludes the bisecting plane.
Each instance of this type is characterized by:
- the bisecting plane’s unit normal, normalized and pointing “inside” the half-space,
- the signed distance along the normal from the bisecting plane to the origin of 3D space.
The distance can also be seen as:
- the distance along the inverse of the normal from the origin of 3D space to the bisecting plane,
- the opposite of the distance along the normal from the origin of 3D space to the bisecting plane.
Any point p
is considered to be within the HalfSpace
when the length of the projection
of p on the normal is greater or equal than the opposite of the distance,
meaning: if the equation normal.dot(p) + distance > 0.
is satisfied.
For example, the half-space containing all the points with a z-coordinate lesser
or equal than 8.0
would be defined by: HalfSpace::new(Vec3::NEG_Z.extend(-8.0))
.
It includes all the points from the bisecting plane towards NEG_Z
, and the distance
from the plane to the origin is -8.0
along NEG_Z
.
It is used to define a Frustum
, but is also a useful mathematical primitive for rendering tasks such as light computation.
Implementations§
Source§impl HalfSpace
impl HalfSpace
Sourcepub fn new(normal_d: Vec4) -> Self
pub fn new(normal_d: Vec4) -> Self
Constructs a HalfSpace
from a 4D vector whose first 3 components
represent the bisecting plane’s unit normal, and the last component is
the signed distance along the normal from the plane to the origin.
The constructor ensures the normal vector is normalized and the distance is appropriately scaled.
Sourcepub fn normal(&self) -> Vec3A
pub fn normal(&self) -> Vec3A
Returns the unit normal vector of the bisecting plane that characterizes the HalfSpace
.
Trait Implementations§
impl Copy for HalfSpace
Auto Trait Implementations§
impl Freeze for HalfSpace
impl RefUnwindSafe for HalfSpace
impl Send for HalfSpace
impl Sync for HalfSpace
impl Unpin for HalfSpace
impl UnwindSafe for HalfSpace
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
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>
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<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.