[][src]Struct collision::Plane

pub struct Plane<S> {
    pub n: Vector3<S>,
    pub d: S,
}

A 3-dimensional plane formed from the equation: A*x + B*y + C*z - D = 0.

Fields

  • n: a unit vector representing the normal of the plane where:
    • n.x: corresponds to A in the plane equation
    • n.y: corresponds to B in the plane equation
    • n.z: corresponds to C in the plane equation
  • d: the distance value, corresponding to D in the plane equation

Notes

The A*x + B*y + C*z - D = 0 form is preferred over the other common alternative, A*x + B*y + C*z + D = 0, because it tends to avoid superfluous negations (see Real Time Collision Detection, p. 55).

Fields

n: Vector3<S>

Plane normal

d: S

Plane distance value

Methods

impl<S: BaseFloat> Plane<S>
[src]

pub fn new(n: Vector3<S>, d: S) -> Plane<S>
[src]

Construct a plane from a normal vector and a scalar distance. The plane will be perpendicular to n, and d units offset from the origin.

pub fn from_abcd(a: S, b: S, c: S, d: S) -> Plane<S>
[src]

Arguments

  • a: the x component of the normal
  • b: the y component of the normal
  • c: the z component of the normal
  • d: the plane's distance value

pub fn from_vector4(v: Vector4<S>) -> Plane<S>
[src]

Construct a plane from the components of a four-dimensional vector

pub fn from_vector4_alt(v: Vector4<S>) -> Plane<S>
[src]

Construct a plane from the components of a four-dimensional vector Assuming alternative representation: A*x + B*y + C*z + D = 0

pub fn from_points(a: Point3<S>, b: Point3<S>, c: Point3<S>) -> Option<Plane<S>>
[src]

Constructs a plane that passes through the the three points a, b and c

pub fn from_point_normal(p: Point3<S>, n: Vector3<S>) -> Plane<S>
[src]

Construct a plane from a point and a normal vector. The plane will contain the point p and be perpendicular to n.

pub fn normalize(&self) -> Option<Plane<S>>
[src]

Normalize a plane.

Trait Implementations

impl<S: BaseFloat> Continuous<Ray<S, Point3<S>, Vector3<S>>> for Plane<S>
[src]

type Result = Point3<S>

Result returned by the intersection test

impl<S: BaseFloat> Continuous<Plane<S>> for Plane<S>
[src]

See Real-Time Collision Detection, p. 210

type Result = Ray3<S>

Result returned by the intersection test

impl<S: BaseFloat> Continuous<(Plane<S>, Plane<S>)> for Plane<S>
[src]

See Real-Time Collision Detection, p. 212 - 214

type Result = Point3<S>

Result returned by the intersection test

impl<S: BaseFloat> Discrete<Ray<S, Point3<S>, Vector3<S>>> for Plane<S>
[src]

impl<S: BaseFloat> Discrete<Plane<S>> for Plane<S>
[src]

impl<S: BaseFloat> Discrete<(Plane<S>, Plane<S>)> for Plane<S>
[src]

impl<S: Copy> Copy for Plane<S>
[src]

impl<S: PartialEq> PartialEq<Plane<S>> for Plane<S>
[src]

impl<S: Clone> Clone for Plane<S>
[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<S: BaseFloat> Debug for Plane<S>
[src]

impl<S> ApproxEq for Plane<S> where
    S: BaseFloat
[src]

type Epsilon = S::Epsilon

Used for specifying relative comparisons.

fn relative_ne(
    &self,
    other: &Self,
    epsilon: Self::Epsilon,
    max_relative: Self::Epsilon
) -> bool
[src]

The inverse of ApproxEq::relative_eq.

fn ulps_ne(&self, other: &Self, epsilon: Self::Epsilon, max_ulps: u32) -> bool
[src]

The inverse of ApproxEq::ulps_eq.

Auto Trait Implementations

impl<S> Send for Plane<S> where
    S: Send

impl<S> Sync for Plane<S> where
    S: Sync

Blanket Implementations

impl<T> From for T
[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]