utils: Add intersection to Rectangle
This commit is contained in:
parent
1a7027eefc
commit
4628fc6bcc
|
@ -833,6 +833,19 @@ impl<N: Coordinate, Kind> Rectangle<N, Kind> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Clamp rectangle to min and max corners resulting in the overlapping area of two rectangles
|
||||||
|
#[inline]
|
||||||
|
pub fn intersection(self, other: impl Into<Rectangle<N, Kind>>) -> Self {
|
||||||
|
let other = other.into();
|
||||||
|
Rectangle::from_extemities(
|
||||||
|
(self.loc.x.max(other.loc.x), self.loc.y.max(other.loc.y)),
|
||||||
|
(
|
||||||
|
(self.loc.x + self.size.w).min(other.loc.x + other.size.w),
|
||||||
|
(self.loc.y + self.size.h).min(other.loc.y + other.size.h),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/// Compute the bounding box of a given set of points
|
/// Compute the bounding box of a given set of points
|
||||||
pub fn bounding_box(points: impl IntoIterator<Item = Point<N, Kind>>) -> Self {
|
pub fn bounding_box(points: impl IntoIterator<Item = Point<N, Kind>>) -> Self {
|
||||||
let ret = points.into_iter().fold(None, |acc, point| match acc {
|
let ret = points.into_iter().fold(None, |acc, point| match acc {
|
||||||
|
|
Loading…
Reference in New Issue