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
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.