[−][src]Struct geo_types::Rect
An axis-aligned bounded 2D rectangle whose area is
defined by minimum and maximum Coordinate
s.
The constructors and setters ensure the maximum
Coordinate
is greater than or equal to the minimum.
Thus, a Rect
s width, height, and area is guaranteed to
be greater than or equal to zero.
Note. While Rect
implements MapCoords
and
RotatePoint
algorithmic traits, the usage is expected
to maintain the axis alignment. In particular, only
rotation by integer multiples of 90 degrees, will
preserve the original shape. In other cases, the min,
and max points are rotated or transformed, and a new
rectangle is created (with coordinate swaps to ensure
min < max).
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 0., y: 4.}, Coordinate { x: 3., y: 10.}, ); assert_eq!(3., rect.width()); assert_eq!(6., rect.height()); assert_eq!( Coordinate { x: 1.5, y: 7. }, rect.center() );
Implementations
impl<T: CoordinateType> Rect<T>
[src]
pub fn new<C>(min: C, max: C) -> Rect<T> where
C: Into<Coordinate<T>>,
[src]
C: Into<Coordinate<T>>,
Constructor to creates a new rectangle from coordinates, where min
denotes to the
coordinates of the bottom-left corner, and max
denotes to the coordinates of the
top-right corner
Panics
Panics if min
's x/y coordinate is larger than that of the max
's.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 20. } );
pub fn try_new<C>(
min: C,
max: C
) -> Result<Rect<T>, InvalidRectCoordinatesError> where
C: Into<Coordinate<T>>,
[src]
min: C,
max: C
) -> Result<Rect<T>, InvalidRectCoordinatesError> where
C: Into<Coordinate<T>>,
pub fn min(self) -> Coordinate<T>
[src]
Returns the minimum Coordinate
(bottom-left corner) of the Rect
.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 5., y: 5. }, Coordinate { x: 15., y: 15. }, ); assert_eq!(rect.min(), Coordinate { x: 5., y: 5. });
pub fn set_min<C>(&mut self, min: C) where
C: Into<Coordinate<T>>,
[src]
C: Into<Coordinate<T>>,
Set the Rect
’s minimum coordinate.
Panics
Panics if min
’s x/y is greater than the maximum coordinate’s x/y.
pub fn max(self) -> Coordinate<T>
[src]
Returns the maximum Coordinate
(top-right corner) of the Rect
.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 5., y: 5. }, Coordinate { x: 15., y: 15. }, ); assert_eq!(rect.max(), Coordinate { x: 15., y: 15. });
pub fn set_max<C>(&mut self, max: C) where
C: Into<Coordinate<T>>,
[src]
C: Into<Coordinate<T>>,
Set the Rect
’s maximum coordinate.
Panics
Panics if max
’s x/y is less than the minimum coordinate’s x/y.
pub fn width(self) -> T
[src]
Returns the width of the Rect
.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 5., y: 5. }, Coordinate { x: 15., y: 15. }, ); assert_eq!(rect.width(), 10.);
pub fn height(self) -> T
[src]
Returns the height of the Rect
.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 5., y: 5. }, Coordinate { x: 15., y: 15. }, ); assert_eq!(rect.height(), 10.);
pub fn to_polygon(self) -> Polygon<T>
[src]
Create a Polygon
from the Rect
.
Examples
use geo_types::{Coordinate, Rect, polygon}; let rect = Rect::new( Coordinate { x: 0., y: 0. }, Coordinate { x: 10., y: 20. }, ); assert_eq!( rect.to_polygon(), polygon![ (x: 0., y: 0.), (x: 0., y: 20.), (x: 10., y: 20.), (x: 10., y: 0.), (x: 0., y: 0.), ], );
impl<T: CoordinateType + Float> Rect<T>
[src]
pub fn center(self) -> Coordinate<T>
[src]
Returns the center Coordinate
of the Rect
.
Examples
use geo_types::{Coordinate, Rect}; let rect = Rect::new( Coordinate { x: 5., y: 5. }, Coordinate { x: 15., y: 15. }, ); assert_eq!( rect.center(), Coordinate { x: 10., y: 10. } );
Trait Implementations
impl<T: Clone> Clone for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T: Copy> Copy for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T: Debug> Debug for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T: Eq> Eq for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T: CoordinateType> From<Rect<T>> for Polygon<T>
[src]
impl<T: CoordinateType> From<Rect<T>> for Geometry<T>
[src]
impl<T: Hash> Hash for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<T: PartialEq> PartialEq<Rect<T>> for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T> StructuralEq for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
impl<T> StructuralPartialEq for Rect<T> where
T: CoordinateType,
[src]
T: CoordinateType,
Auto Trait Implementations
impl<T> RefUnwindSafe for Rect<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for Rect<T> where
T: Send,
T: Send,
impl<T> Sync for Rect<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Rect<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for Rect<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,