pub struct ClipPlane(/* private fields */);Implementations§
Source§impl ClipPlane
impl ClipPlane
Sourcepub fn signed_dist(&self, pt: &ClipVec) -> f32
pub fn signed_dist(&self, pt: &ClipVec) -> f32
Returns the signed distance between pt and self.
The return value is positive if pt is “outside” the plane,
defined as the half-space in the direction of the normal vector,
negative if pt is in the other half-space, and zero if pt
is exactly coincident with the plane:
n
^ d > 0
| x
| |
|_ |
-----x-----+-'------------ self
d = 0 |
x
d < 0Sourcepub fn outcode(&self, pt: &ClipVec) -> u8
pub fn outcode(&self, pt: &ClipVec) -> u8
Computes this plane’s outcode bit for a point.
The result is self.1 if pt is outside this plane, 0 otherwise.
Sourcepub fn is_inside<A>(&self, v: &ClipVert<A>) -> bool
pub fn is_inside<A>(&self, v: &ClipVert<A>) -> bool
Checks the outcode of a clip vertex against self.
Returns true if this plane’s outcode bit in v is 0, false otherwise.
pub fn intersect<A: Lerp>( &self, [v0, v1]: [&ClipVert<A>; 2], ) -> Option<ClipVert<A>>
Sourcepub fn clip_simple_polygon<A: Lerp + Clone>(
&self,
verts_in: &[ClipVert<A>],
verts_out: &mut Vec<ClipVert<A>>,
)
pub fn clip_simple_polygon<A: Lerp + Clone>( &self, verts_in: &[ClipVert<A>], verts_out: &mut Vec<ClipVert<A>>, )
Clips a convex polygon against self.
Returns the resulting vertices in the out parameter verts_out.
In the diagram below, clipping triangle ABC results in quad ABPQ, where P and Q are new vertices generated by interpolating between A and C, and B and C, respectively.
n
^ C
| / \ outside
| / \
----+-------Q-------P--------self-----
/ \
A--___ \ inside
`---__ \
`---B