Implement division operation for Rectangle, Size and Vector

This commit is contained in:
Andy Terra 2025-01-29 18:32:37 -05:00 committed by Héctor Ramón Jiménez
parent 5195a59e20
commit 6f9b7a9005
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 54 additions and 0 deletions

View file

@ -354,6 +354,19 @@ impl std::ops::Mul<f32> for Rectangle<f32> {
}
}
impl std::ops::Div<f32> for Rectangle<f32> {
type Output = Self;
fn div(self, scale: f32) -> Self {
Self {
x: self.x / scale,
y: self.y / scale,
width: self.width / scale,
height: self.height / scale,
}
}
}
impl From<Rectangle<u32>> for Rectangle<f32> {
fn from(rectangle: Rectangle<u32>) -> Rectangle<f32> {
Rectangle {
@ -410,3 +423,19 @@ where
}
}
}
impl<T> std::ops::Div<Vector<T>> for Rectangle<T>
where
T: std::ops::Div<Output = T> + Copy,
{
type Output = Rectangle<T>;
fn div(self, scale: Vector<T>) -> Self {
Rectangle {
x: self.x / scale.x,
y: self.y / scale.y,
width: self.width / scale.x,
height: self.height / scale.y,
}
}
}

View file

@ -150,6 +150,20 @@ where
}
}
impl<T> std::ops::Div<T> for Size<T>
where
T: std::ops::Div<Output = T> + Copy,
{
type Output = Size<T>;
fn div(self, rhs: T) -> Self::Output {
Size {
width: self.width / rhs,
height: self.height / rhs,
}
}
}
impl<T> std::ops::Mul<Vector<T>> for Size<T>
where
T: std::ops::Mul<Output = T> + Copy,

View file

@ -64,6 +64,17 @@ where
}
}
impl<T> std::ops::Div<T> for Vector<T>
where
T: std::ops::Div<Output = T> + Copy,
{
type Output = Self;
fn div(self, scale: T) -> Self {
Self::new(self.x / scale, self.y / scale)
}
}
impl<T> Default for Vector<T>
where
T: Default,