IhEC5      !"#$%&'()*+,-./01234+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) Safe5Removes the given suffix if it exists, does nothing otherwise TODO: Move to utils module or use existing implementation TODO: Refactor6<TODO: Type for distinguishing inclusive and exclusive values567856785678+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None 9;<=?OT\TODO: Use existing type instead (?) data Side = SideLeft | SideRight | SideTop | SideBottom#TODO: Use record (eg. from, to) (?)TODO: Anchors (eg. C, N, S, E W and combinations thereof, perhaps represented as relative Vectors) TODO: Define some standard instances (eg. Functor, Applicative)Coordinate system wrappers type DomainTODO: Rename (eg. Shape) (?)<A vector where each component represents a single axis (cf. )&An axis represented as (begin, length)?A lens focusing on a single [vector-]component in a BoundingBox* 9:;<=>?@ABCDEFGHIJKLMNOP 9:;<=>?@ABCDE   9:;<=>?@ABCDEFGHIJKLMNOP+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None    +Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None :<=?LOTUgh...Ipad :: (Getter v f) -> f -> f -> BoundingBox v pad axis by direction = _\Like pinned, except it operates on a single axis and only focuses on the position (not size)7TODO: Change the type to make it play more nicely with ' (?) TODO: - What's the proper way of lifting lenses (such as r), so they work on multiple fields. This is not mucher better than it used to be when we didn't have the  helper...7Creates a lens where a pin is placed on a given point (to), so that the box can be placed or resized relative to the pin. It is also useful for retrieving points within the box (such as the centre).SThe pin is assumed to be normalised with respect to the corner and size of the box. let box = BoundingBox { cornerOf = V2 10 24, sizeOf = V2 6 18 } box^.pinned (V2 0.5 0.5) -- Anchored to the centre > V2 (13.0,6.0) (33.0,18.0) #Focuses on a single axis of the box#TODO: Turn this into a lens function (?) TODO: Polish description TODO: Loosen constraint on n (') axes which.pinned (V1 step).x._1 -- lens get set/>TODO: This should probably yield a vector (rename or redesign) !"#$%&'()*+,-./ !"#$%&'()*+,-./ !"#$%&'()*+,-./Exports public lenses(c) Jonatan H Sundqvist, 2015 MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None  !"#$%&'()*+,-./ !"#$%&'()*+,-./ +Copyright : (c) Jonatan H Sundqvist, 2016MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) Safe9;BDefines basic functionality that is shared between Plane and Space(c) Jonatan H Sundqvist, 2015 MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None9;0Finds the overlap between two ranges (lower bound, upper bound). | Yields the overlap of two closed intervals (n " R) TODO: Normalise intervals (eg. (12, 5) -> (5, 12)) TODO: Type for intervals (which would also encode the openness of the lower and upper limits)1MCross product cross :: (Vector v, Num f) => v f -> v f -> v f cross a b = _}Euclidean distance between two points euclidean :: (Vector v, Floating f) => v f -> v f -> f euclidean a b = sqrt $ dot a bVector -> (magnitude, argument) polar :: (Floating a, Eq a) => Vector a -> (a, a) polar v@(Vector x y) = (magnitude v, argument v)Creates a bounding box from two opposite corners TODO: Better name (?) TODO: Don't make assumptions about WHICH corners they are (') TODO: Should we care about degenerate cases (such as a and b being identical)3Top Left Bottom Right4:Finds the intersection (boolean AND) of two bounding boxes01234$ 9:;<=>?@ABCDE0123401234.Exports the core functionality of this package(c) Jonatan H Sundqvist, 2016 MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None9;5   !"#$%&'()*+,-./0123401234Q           !"#$%&'()*+,-./0123456789:;<=>?@ABCDDEFGHIJK"LMNOPQRSTUVWX(Cartesian-0.6.0.0-FWpmTnikOL65CycGBqYEdFCartesian.TypesCartesian.LensesCartesian.CoreCartesian.Internal.UtilsCartesian.Internal.TypesCartesian.Internal.LensesCartesian.Internal.InstancesCartesian.Internal.Corebase Data.Complex:+Complex$linear-1.20.5-KjK8yuV2Amf2Ji2WrPeep4 Linear.V4V4 Linear.V3V3 Linear.V2V2 Linear.V1V1HasZzHasYyHasXxLinearLine BoundingBoxcornerOfsizeOfAbsolute NormalisedPolygonAxesAxisBoxLenscornersize pinnedAxispinnedaxisaxesextentssidebeginendwidthheightdepthleftrightbottomtopfrontbackcentreoverlap fromCornersfromAxes fromExtents intersect dropSuffixbetweenzipAunzipAInterval Inclusivity Inclusive Exclusive interceptOfslopeOf Absoloute normalisedabsolute$fHasYComplexf$fHasXComplexf $fHasZV4f $fHasYV4f $fHasXV4f $fHasZV3f $fHasYV3f $fHasXV3f $fHasYV2f $fHasXV2f $fHasXV1f