pub trait Scale<T: CoordNum> {
// Required methods
fn scale(&self, scale_factor: T) -> Self;
fn scale_mut(&mut self, scale_factor: T);
fn scale_xy(&self, x_factor: T, y_factor: T) -> Self;
fn scale_xy_mut(&mut self, x_factor: T, y_factor: T);
fn scale_around_point(
&self,
x_factor: T,
y_factor: T,
origin: impl Into<Coord<T>>
) -> Self;
fn scale_around_point_mut(
&mut self,
x_factor: T,
y_factor: T,
origin: impl Into<Coord<T>>
);
}
Expand description
Required Methods§
sourcefn scale(&self, scale_factor: T) -> Self
fn scale(&self, scale_factor: T) -> Self
Scale a geometry from it’s bounding box center.
Examples
use geo::Scale;
use geo::{LineString, line_string};
let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)];
let scaled = ls.scale(2.);
assert_eq!(scaled, line_string![
(x: -5., y: -5.),
(x: 15., y: 15.)
]);
sourcefn scale_xy(&self, x_factor: T, y_factor: T) -> Self
fn scale_xy(&self, x_factor: T, y_factor: T) -> Self
Scale a geometry from it’s bounding box center, using different values for x_factor
and
y_factor
to distort the geometry’s aspect ratio.
Examples
use geo::Scale;
use geo::{LineString, line_string};
let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)];
let scaled = ls.scale_xy(2., 4.);
assert_eq!(scaled, line_string![
(x: -5., y: -15.),
(x: 15., y: 25.)
]);
sourcefn scale_xy_mut(&mut self, x_factor: T, y_factor: T)
fn scale_xy_mut(&mut self, x_factor: T, y_factor: T)
Mutable version of scale_xy
.
sourcefn scale_around_point(
&self,
x_factor: T,
y_factor: T,
origin: impl Into<Coord<T>>
) -> Self
fn scale_around_point( &self, x_factor: T, y_factor: T, origin: impl Into<Coord<T>> ) -> Self
Scale a geometry around a point of origin
.
The point of origin is usually given as the 2D bounding box centre of the geometry, in
which case you can just use scale
or scale_xy
, but
this method allows you to specify any point.
Examples
use geo::Scale;
use geo::{LineString, line_string, Coord};
let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)];
let scaled = ls.scale_around_point(2., 4., Coord { x: 100., y: 100. });
assert_eq!(scaled, line_string![
(x: -100., y: -300.),
(x: -80., y: -260.)
]);
sourcefn scale_around_point_mut(
&mut self,
x_factor: T,
y_factor: T,
origin: impl Into<Coord<T>>
)
fn scale_around_point_mut( &mut self, x_factor: T, y_factor: T, origin: impl Into<Coord<T>> )
Mutable version of scale_around_point
.
Object Safety§
This trait is not object safe.