úÎNgIÚ0      !"#$%&'()*+,-./ +Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) Safe0ˆRemoves the given suffix if it exists, does nothing otherwise TODO: Move to utils module or use existing implementation TODO: Refactor000+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None791eTODO: Use GADT instead (?) TODO: Reduce boilerplate, figure out deriving, choose interface carefully2bTODO: Anchors (eg. C, N, S, E W and combinations thereof, perhaps represented as relative Vectors)3456789:;1<=2>?@3456789:;1<=2>?@3456789:;1<=2>?@+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None7INAFocus on the X componentBFocus on the Y componentCFocus on the Z componentDUgh...ETODO: Rename (?)FIpad :: f -> (Getter v f) -> f -> BoundingBox v pad by axis direction = _0Moves one side of a BoundingBox along the given axis so that its new position is at G. The towardsÎ parameter is expected to be either (-) and (+), indicating which side along the axis we're dealing with. TODO: Turn this into a lens function (?) TODO: Polish description TODO: Loosen constraint on fABCHDEFIJKLMNOPQABCHDEFIJKLMNOPQABCHDEFIJKLMNOPQBDefines basic functionality that is shared between Plane and Space(c) Jonatan H Sundqvist, 2015 MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) NoneR@Finds the overlap between two ranges (lower bound, upper bound).S0Applies a function to each component in a vectorT"Performs component-wise operationsUDot product of two vectorsV%Euclidean distance between two pointsRSTUVWX3456789:;1<=2>?@RSTUVWXRSTUVWX+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) NoneINbTODO: Anchors (eg. C, N, S, E W and combinations thereof, perhaps represented as relative Vectors)+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) NoneIN{TODO: Make sure invariants remain true (eg. left < right) TODO: Make coordinate-system independent (eg. direction of axes)         +Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) Safe+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None357Kdata BoundingBox f = BoundingBox { _centre :: Vector f, _size :: Vector f }TODO: Refactor. A lot.   +Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None (C) 2015 Jonatan H Sundqvist !MIT-style (see the file LICENSE) 2Jonatan H Sundqvist <jonatanhsundqvist@gmail.com>  provisional  Portable None+Copyright : (c) Jonatan H Sundqvist, yearMIT Jonatan H Sundqvist experimental|stable POSIX (not sure) NoneTODO: Rename (eg. Shape) (?)TODO: Rename (?)! type DomainFDetermines if a point lies within a polygon using the odd-even method.DTODO: Use epsilon (?) TODO: How to treat points that lie on an edge""Performs component-wise operations#Dot product of two vectors$%Euclidean distance between two points'=Angle (in radians) between the positive X-axis and the vector)Vector -> (magnitude, argument)*¿Yields the point at which two finite lines intersect. The lines are defined inclusively by their endpoints. The result is wrapped in a Maybe value to account for non-intersecting lines.ÌTODO: Move equation solving to separate function (two linear functions) TODO: Simplify logic by considering f(x) = y for vertical lines (?) TODO: Return Either instead of Maybe (eg. Left "parallel") (?) TODO: Math notes, MathJax or LaTex TODO: Intersect for curves (functions) and single points (?) TODO: Polymorphic, typeclass (lines, shapes, ranges, etc.) (?)+Minside :: (Num n, Ord n) => Triangle n -> Point n -> Bool inside _ _ = False,fYields the overlap of two closed intervals (n " R) TODO: Normalise intervals (eg. (12, 5) -> (5, 12))-TODO: Intersect RectangleslCoefficients for the linear function of a Line (slope, intercept). Fails for vertical and horizontal lines.>TODO: Use Maybe (?) TODO: Rename (eg. toLinear, function) (?).CSolves a linear equation for x (f(x) = g(x)) TODO: Use Epsilon (?)/abs v * signum v == v !"#$%&'()*+,-./ !"#$%&'()*+,-. !/"#$%&'()*+,-. !"#$%&'()*+,-./Y    !!"#$%%&'()*+,-./012345% 6789:;<=>?@ ABCDEFGHIJKLMNO1P'()*+QCarte_62rjI2ymNHFLy4QmDU30OVCartesian.Plane.TypesCartesian.Plane.LensesCartesian.Space.TypesCartesian.PlaneCartesian.Internal.UtilsCartesian.Internal.TypesCartesian.Internal.LensesCartesian.Internal.CoreCartesian.TypesCartesian.Space.LensesCartesian.Space BoundingBox_centre_sizemakeBoundingBoxSideLenscentresizeleftrighttopbottomleftpadrightpadtoppad bottompadLineVector3D$fHasZVector3Df$fHasYVector3Df$fHasXVector3Df $fNumVector3D$fVectorVector3DLinear interceptslopePolygonVectorinsidedotwisedot euclidean magnitudemagargumentargpolar intersect intersectsoverlap coefficientssolve $fNumVector dropSuffixHasZgetZsetZHasYgetYsetYHasXgetXsetXvfoldvzipcentreOfsizeOfxyzoffsetsidelens_74B6nvNmsDABaG4LVIbAm8Control.Lens.Gettertowidthheightdepthfrontbackdotmap