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
impl Plane
Sourcepub fn new(origin: [f64; 3], normal: [f64; 3]) -> Result<Plane, QueryError>
pub fn new(origin: [f64; 3], normal: [f64; 3]) -> Result<Plane, QueryError>
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.
Sourcepub fn with_axes(
origin: [f64; 3],
u: [f64; 3],
v: [f64; 3],
) -> Result<Plane, QueryError>
pub fn with_axes( origin: [f64; 3], u: [f64; 3], v: [f64; 3], ) -> Result<Plane, QueryError>
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).
Sourcepub fn origin(&self) -> [f64; 3]
pub fn origin(&self) -> [f64; 3]
The point the plane was given through, origin of the 2D frame.
Sourcepub fn signed_distance(&self, p: [f64; 3]) -> f64
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.