Skip to main content

Plane

Struct Plane 

Source
pub struct Plane { /* private fields */ }
Expand description

A plane in mesh-local coordinates, with an orthonormal 2D frame (u, v) in it. The frame is right-handed: normal = u × v.

The signed distance of a point p is n·p − n·origin, in f64; points with a signed distance of zero or more are on the plane’s + side. So a point exactly in the plane counts as +, and flipping the normal is not always the same cut: a mesh face lying in the plane is cut with one sign of the normal and not the other (see slice).

Implementations§

Source§

impl Plane

Source

pub fn new(origin: [f64; 3], normal: [f64; 3]) -> Result<Plane>

The plane through origin with normal normal, which is normalised.

The frame is the default one: u is the world axis least parallel to the normal (the first such axis on ties), made orthogonal to it and normalised, and v = normal × u. It changes only when the normal changes which axis that is.

§Errors

QueryError::InvalidInput when origin is not finite, or normal is zero or not finite.

Source

pub fn with_axes(origin: [f64; 3], u: [f64; 3], v: [f64; 3]) -> Result<Plane>

The plane through origin spanned by the frame (u, v), with normal u × v (normalised). The axes are kept as given.

§Errors

QueryError::InvalidInput when an argument is not finite, or the axes are not orthonormal within 1e-6 (unit length and orthogonal).

Source

pub fn origin(&self) -> [f64; 3]

The point the plane was given through, origin of the 2D frame.

Source

pub fn normal(&self) -> [f64; 3]

The unit normal, pointing to the + side.

Source

pub fn u(&self) -> [f64; 3]

The first axis of the 2D frame.

Source

pub fn v(&self) -> [f64; 3]

The second axis of the 2D frame.

Source

pub fn signed_distance(&self, p: [f64; 3]) -> f64

The signed distance n·p − n·origin of p from the plane: positive on the side the normal points to.

Source

pub fn to_uv(&self, p: [f64; 3]) -> [f64; 2]

The 2D coordinates ((p − origin)·u, (p − origin)·v) of p, which is projected onto the plane along the normal.

Source

pub fn from_uv(&self, q: [f64; 2]) -> [f64; 3]

The point of the plane with 2D coordinates q: origin + q₀·u + q₁·v.

Trait Implementations§

Source§

impl Clone for Plane

Source§

fn clone(&self) -> Plane

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Plane

Source§

impl Debug for Plane

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Plane

Source§

fn eq(&self, other: &Plane) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Plane

Auto Trait Implementations§

§

impl Freeze for Plane

§

impl RefUnwindSafe for Plane

§

impl Send for Plane

§

impl Sync for Plane

§

impl Unpin for Plane

§

impl UnsafeUnpin for Plane

§

impl UnwindSafe for Plane

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where 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> ToOwned for T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.