// Ported from georust/geo
// https://github.com/georust/geo/blob/main/geo/src/algorithm/skew.rs
///|
/// Skew (shear) a geometry by `xs` and `ys` degrees, around the origin.
pub fn skew_geometry(
g : @type.Geometry,
xs_degrees : Double,
ys_degrees : Double,
) -> @type.Geometry {
AffineTransform::skew_origin(xs_degrees, ys_degrees).transform(g)
}
///|
/// Skew a geometry around the given pivot.
pub fn skew_geometry_around(
g : @type.Geometry,
xs_degrees : Double,
ys_degrees : Double,
pivot : @type.Coord,
) -> @type.Geometry {
let to_origin = AffineTransform::translate_xy(-pivot.x(), -pivot.y())
let skew = AffineTransform::skew_origin(xs_degrees, ys_degrees)
let from_origin = AffineTransform::translate_xy(pivot.x(), pivot.y())
to_origin.compose(skew).compose(from_origin).transform(g)
}