Struct rin_graphics::Polyline [−][src]
An open or closed collection of vertices that represents a polyline or polygon
Has methods to do calculations over such geometrical shapes
Implementations
impl<T: RealField + NumCast> Polyline<T>
[src]
impl<T: RealField + NumCast> Polyline<T>
[src]pub fn new() -> Polyline<T>
[src]
creates an empty polyline
pub fn new_from_disordered_points(
points: Vec<Pnt2<T>>,
closed: bool
) -> Polyline<T>
[src]
points: Vec<Pnt2<T>>,
closed: bool
) -> Polyline<T>
creates a new polyline from the vector of points but orders them CCW first
pub fn area(&self) -> T
[src]
returns the area of the polygon, only works if the polyline represents a polygon
pub fn centroid(&self) -> Pnt2<T>
[src]
centroid of the polyline, should work for any collection of points although it will only make sense if it’s a polygon
pub fn close(&mut self)
[src]
mark this polyline as being a closed shape, although not necesarily a polygon. Any rendering or calculation will take into account that the first and last points are joined
pub fn is_closed(&self) -> bool
[src]
returns true if the polyline is closed
pub fn len(&self) -> usize
[src]
returns total number of points
pub fn push(&mut self, p: Pnt2<T>)
[src]
add a new point at the end of the polyline
pub fn remove(&mut self, idx: usize) -> Pnt2<T>
[src]
removes a new point at the end of the polyline
pub fn extend<I: IntoIterator<Item = Pnt2<T>>>(&mut self, vertices: I)
[src]
pub fn smoothed(&self, window_size: usize, window_shape: T) -> Polyline<T>
[src]
Returns a smoothed version of the polyline.
window_size
is the size of the smoothing window. So if
window_size
is 2, then 2 points from the left, 1 in the center,
and 2 on the right (5 total) will be used for smoothing each point.
window_shape
describes whether to use a triangular window (0) or
box window (1) or something in between (for example, .5).
pub fn subdivide_linear(&self, resolution: usize) -> Polyline<T>
[src]
pub fn iter(&self) -> Iter<'_, Pnt2<T>>
[src]
pub fn iter_mut(&mut self) -> IterMut<'_, Pnt2<T>>
[src]
pub fn windows(&self, size: usize) -> Windows<'_, Pnt2<T>>
[src]
pub fn first(&self) -> Option<&Pnt2<T>>
[src]
pub fn first_mut(&mut self) -> Option<&mut Pnt2<T>>
[src]
pub fn last(&self) -> Option<&Pnt2<T>>
[src]
pub fn last_mut(&mut self) -> Option<&mut Pnt2<T>>
[src]
pub fn is_empty(&self) -> bool
[src]
pub fn lerped_point_at(&self, fidx: T) -> Option<Pnt2<T>>
[src]
Returns the point at an index + a normalized pct
pub fn segment_length(&self, idx: usize) -> Option<T>
[src]
Returns the length of the segment at the passed index or None if such segment doesn’t exist
pub fn segment_length_squared(&self, idx: usize) -> Option<T>
[src]
Returns the square length of the segment at the passed index or None if such segment doesn’t exist
pub fn clear(&mut self)
[src]
Removes all points from the polyline
pub fn wrap_index(&self, idx: isize) -> Option<usize>
[src]
Returns an index wrapped around a closed polygon or clamped on a polyline. Will return None if the polyline is empty
pub fn next_non_zero_segment(&self, idx: usize) -> Option<usize>
[src]
Finds the next segment which length is different than 0 starting from the passed index and wrapping around on closed polygons
pub fn prev_non_zero_segment(&self, idx: usize) -> Option<usize>
[src]
Finds the previous segment which length is different than 0 starting from the passed index and wrapping around on closed polygons
pub fn simplify(&mut self, epsilon: T)
[src]
pub fn retain<F>(&mut self, f: F) where
F: FnMut(&Pnt2<T>) -> bool,
[src]
F: FnMut(&Pnt2<T>) -> bool,
impl<T: NumCast + RealField> Polyline<T>
[src]
impl<T: NumCast + RealField> Polyline<T>
[src]pub fn tangent_at(&self, idx: usize) -> Option<Vec2<T>>
[src]
Tangent at the point in the passed index if it exists
pub fn lerped_tangent_at(&self, fidx: T) -> Option<Vec2<T>>
[src]
Tangent at the lerped point at the passed index + normalized pct
Trait Implementations
impl<'de, T: RealField + Debug + 'static> Deserialize<'de> for Polyline<T> where
T: Deserialize<'de>,
[src]
impl<'de, T: RealField + Debug + 'static> Deserialize<'de> for Polyline<T> where
T: Deserialize<'de>,
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl<T> FromIterator<Point<T, U2>> for Polyline<T> where
T: RealField,
[src]
impl<T> FromIterator<Point<T, U2>> for Polyline<T> where
T: RealField,
[src]fn from_iter<I>(iter: I) -> Polyline<T> where
I: IntoIterator<Item = Pnt2<T>>,
[src]
I: IntoIterator<Item = Pnt2<T>>,
impl<T: RealField> IntoIterator for Polyline<T>
[src]
impl<T: RealField> IntoIterator for Polyline<T>
[src]Auto Trait Implementations
impl<T> RefUnwindSafe for Polyline<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Polyline<T>
impl<T> Sync for Polyline<T>
impl<T> Unpin for Polyline<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Polyline<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]pub fn erased_serialize(
&self,
serializer: &mut dyn Serializer
) -> Result<Ok, Error>
[src]
&self,
serializer: &mut dyn Serializer
) -> Result<Ok, Error>
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
[src]
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
[src]pub fn to_subset(&self) -> Option<SS>
[src]
pub fn is_in_subset(&self) -> bool
[src]
pub fn to_subset_unchecked(&self) -> SS
[src]
pub fn from_subset(element: &SS) -> SP
[src]
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
[src]
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
[src]pub fn to_subset(&self) -> Option<SS>
[src]
pub fn is_in_subset(&self) -> bool
[src]
pub fn to_subset_unchecked(&self) -> SS
[src]
pub fn from_subset(element: &SS) -> SP
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,