Struct collision::Plane
[−]
[src]
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 toAin the plane equationn.y: corresponds toBin the plane equationn.z: corresponds toCin the plane equation
d: the distance value, corresponding toDin 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]
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.
fn from_abcd(a: S, b: S, c: S, d: S) -> Plane<S>[src]
Arguments
a: thexcomponent of the normalb: theycomponent of the normalc: thezcomponent of the normald: the plane's distance value
fn from_vector4(v: Vector4<S>) -> Plane<S>[src]
Construct a plane from the components of a four-dimensional vector
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
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
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.
fn normalize(&self) -> Option<Plane<S>>[src]
Normalize a plane.
Trait Implementations
impl<S: Copy> Copy for Plane<S>[src]
impl<S: Clone> Clone for Plane<S>[src]
fn clone(&self) -> Plane<S>[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
Performs copy-assignment from source. Read more
impl<S: PartialEq> PartialEq for Plane<S>[src]
fn eq(&self, __arg_0: &Plane<S>) -> bool[src]
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, __arg_0: &Plane<S>) -> bool[src]
This method tests for !=.
impl<S> ApproxEq for Plane<S> where
S: BaseFloat, [src]
S: BaseFloat,
type Epsilon = S::Epsilon
Used for specifying relative comparisons.
fn default_epsilon() -> S::Epsilon[src]
The default tolerance to use when testing values that are close together. Read more
fn default_max_relative() -> S::Epsilon[src]
The default relative tolerance for testing values that are far-apart. Read more
fn default_max_ulps() -> u32[src]
The default ULPs to tolerate when testing values that are far-apart. Read more
fn relative_eq(
&self,
other: &Self,
epsilon: S::Epsilon,
max_relative: S::Epsilon
) -> bool[src]
&self,
other: &Self,
epsilon: S::Epsilon,
max_relative: S::Epsilon
) -> bool
A test for equality that uses a relative comparison if the values are far apart.
fn ulps_eq(&self, other: &Self, epsilon: S::Epsilon, max_ulps: u32) -> bool[src]
A test for equality that uses units in the last place (ULP) if the values are far apart.
fn relative_ne(
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool[src]
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
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.
impl<S: BaseFloat> Debug for Plane<S>[src]
impl<S: BaseFloat> Continuous<Ray3<S>> for Plane<S>[src]
type Result = Point3<S>
Result returned by the intersection test
fn intersection(&self, r: &Ray3<S>) -> Option<Point3<S>>[src]
Intersection test
impl<S: BaseFloat> Discrete<Ray3<S>> for Plane<S>[src]
fn intersects(&self, r: &Ray3<S>) -> bool[src]
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
fn intersection(&self, p2: &Plane<S>) -> Option<Ray3<S>>[src]
Intersection test
impl<S: BaseFloat> Discrete<Plane<S>> for Plane<S>[src]
fn intersects(&self, p2: &Plane<S>) -> bool[src]
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
fn intersection(&self, planes: &(Plane<S>, Plane<S>)) -> Option<Point3<S>>[src]
Intersection test