waterfall-cad-0.6.3.1: Declarative CAD/Solid Modeling Library
Safe HaskellNone
LanguageHaskell2010

Waterfall.TwoD.Transforms

Synopsis

Transformations

class Transformable2D a Source #

Typeclass for objects that can be manipulated in 2D space

Instances

Instances details
Transformable2D Diagram Source # 
Instance details

Defined in Waterfall.Diagram

Transformable2D RawDiagram Source # 
Instance details

Defined in Waterfall.TwoD.Transforms

Transformable2D Path2D Source # 
Instance details

Defined in Waterfall.TwoD.Transforms

Transformable2D Shape Source # 
Instance details

Defined in Waterfall.TwoD.Transforms

Transformable2D (V2 Double) Source # 
Instance details

Defined in Waterfall.TwoD.Transforms

matTransform2D :: Transformable2D a => M23 Double -> a -> a Source #

Directly transform with a transformation matrix

rotate2D :: Transformable2D a => Double -> a -> a Source #

Rotate by an angle (in radians) about the origin

scale2D :: Transformable2D a => V2 Double -> a -> a Source #

Scale by different amounts along the x and y axes

uScale2D :: Transformable2D a => Double -> a -> a Source #

Scale uniformly along both axes

translate2D :: Transformable2D a => V2 Double -> a -> a Source #

Translate by a distance in 2D space

mirror2D :: Transformable2D a => V2 Double -> a -> a Source #

Mirror in the line, which passes through the origin, perpendicular to the specified vector

Note that in order to maintain consistency with Transformable, the mirror is in the line perpendicular to the vector, not in the line parallel to the vector

Optics

_translated2D :: Transformable2D t => V2 Double -> Iso' t t Source #

Every translation is an isomorphism

_scaled2D :: Transformable2D t => V2 Double -> Maybe (Iso' t t) Source #

A scale by v as an isomorphism

Returns Nothing when any component of v is (near) zero, as a scale that collapses an axis has no inverse.

_uScaled2D :: Transformable2D t => Double -> Maybe (Iso' t t) Source #

A scale by s as an isomorphism

Returns Nothing when s is (near) zero, as a scale that collapses everything to the origin has no inverse.

_rotated2D :: Transformable2D t => Double -> Iso' t t Source #

Every rotation is an isomorphism

_mirrored2D :: Transformable2D t => V2 Double -> Iso' t t Source #

Every mirror is an isomorphism