# Struct bevy::render::primitives::HalfSpace

``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§

§

### impl HalfSpace

#### pub fn new(normal_d: Vec4) -> HalfSpace

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.

#### pub fn normal(&self) -> Vec3A

Returns the unit normal vector of the bisecting plane that characterizes the `HalfSpace`.

#### pub fn d(&self) -> f32

Returns the signed distance from the bisecting plane to the origin along the plane’s unit normal vector.

#### pub fn normal_d(&self) -> Vec4

Returns the bisecting plane’s unit normal vector and the signed distance from the plane to the origin.

## Trait Implementations§

§

### impl Clone for HalfSpace

§

#### fn clone(&self) -> HalfSpace

Returns a copy of the value. Read more
1.0.0 · source§

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
§

### impl Debug for HalfSpace

§

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

### impl Default for HalfSpace

§

#### fn default() -> HalfSpace

Returns the “default value” for a type. Read more
§

§

§

§

§

§

§

## Blanket Implementations§

source§

### impl<T> Any for Twhere T: 'static + ?Sized,

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
§

### impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,

§

#### fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the `T` `ShaderType` for `self`. When used in `AsBindGroup` derives, it is safe to assume that all images in `self` exist.
source§

### impl<T> Borrow<T> for Twhere T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

§

§

### impl<T> Downcast for Twhere T: 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`.
§

#### 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`.
§

#### 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.
§

#### 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.
§

### impl<T> DowncastSync for Twhere T: Any + Send + Sync,

§

#### fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert `Arc<Trait>` (where `Trait: Downcast`) to `Arc<Any>`. `Arc<Any>` can then be further `downcast` into `Arc<ConcreteType>` where `ConcreteType` implements `Trait`.
source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

§

§

§

### impl<T> FromWorld for Twhere T: Default,

§

#### fn from_world(_world: &mut World) -> T

Creates `Self` using data from the given `World`.
§

### impl<T> Instrument for T

§

#### fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided `Span`, returning an `Instrumented` wrapper. Read more
§

#### fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current `Span`, returning an `Instrumented` wrapper. Read more
source§

### impl<T, U> Into<U> for Twhere U: From<T>,

source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source§

### impl<T> IntoEither for T

source§

#### fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts `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 more
source§

#### fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘwhere F: FnOnce(&Self) -> bool,

Converts `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 more
§

§

§

### impl<T> NoneValue for Twhere T: Default,

§

§

#### fn null_value() -> T

The none-equivalent value.
§

### impl<T> Pointable for T

§

#### const ALIGN: usize = _

The alignment of pointer.
§

#### type Init = T

The type for initializers.
§

#### unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

#### unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

#### unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

#### unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

source§

Read this value from the supplied reader. Same as `ReadEndian::read_from_little_endian()`.
source§

Read this value from the supplied reader. Same as `ReadEndian::read_from_big_endian()`.
source§

Read this value from the supplied reader. Same as `ReadEndian::read_from_native_endian()`.
source§

### impl<T> Same for T

§

#### type Output = T

Should always be `Self`
source§

### impl<T> ToOwned for Twhere T: Clone,

§

#### type Owned = T

The resulting type after obtaining ownership.
source§

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

§

source§

### impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

### impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

§

§

§

§

§

§

### impl<T> WithSubscriber for T

§

#### fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere S: Into<Dispatch>,

Attaches the provided `Subscriber` to this type, returning a `WithDispatch` wrapper. Read more
§

#### fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default `Subscriber` to this type, returning a `WithDispatch` wrapper. Read more
§

§

§

§

§

§