úÎGËDiB      !"#$%&'()*+,-./0123456789:;<=>?@A+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) Safe0Applies a function to each component in a vectorNegates the real component (X)#Negates the imaginary component (Y)ACreates a number on the real line (where the imaginary part is 0)ACreates a number on the imaginary line (where the real part is 0)(C) 2015 Jonatan H Sundqvist !MIT-style (see the file LICENSE) 2Jonatan H Sundqvist <jonatanhsundqvist@gmail.com>  provisional  Portable Safe /Why the hell did I write this useless function? "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 argument :: (Floating a, Eq a) => Vector a -> a argument (Vector 0 0 0) = 0 argument (Vector x y z) = atan $ y/x„Vector -> (magnitude, argument) polar :: (Floating a, Eq a) => Vector a -> (a, a) polar v@(Vector x y) = (magnitude v, argument v)«Intersect TODO: Math notes, MathJax or LaTex TODO: Intersect for curves (functions) and single points (?) TODO: Polymorphic, typeclass (lines, shapes, ranges, etc.) (?)fYields the overlap of two closed intervals (n " R) TODO: Normalise intervals (eg. (12, 5) -> (5, 12))TODO: Intersect RectanglesˆCoefficients for the linear function of a Line (slope, intercept). The Z-component is ignored. Fails for vertical and horizontal lines.TODO: Use Maybe (?)       +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) None$TTODO: Better name (?) TODO: Don't make assumptions about WHICH corners they are (')%6Creates a bounding box from a topleft and size vector.&Top Left Bottom Right$%&' !"#$%&'$%&'$%&'+Copyright : (c) Jonatan H Sundqvist, yearMIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None,TODO: Rename (eg. Shape) (?)/TODO: Rename (?)1 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 edge2"Performs component-wise operations3Dot product of two vectors4%Euclidean distance between two points7=Angle (in radians) between the positive X-axis and the vector9Vector -> (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()*+,-./0123456789:;<=>?()*+,-./0123456789:;<=>/0-.,()*+1?23456789:;<=>()*+,-./0123456789:;<=>?+Copyright : (c) Jonatan H Sundqvist, 2015MIT Jonatan H Sundqvist experimental|stable POSIX (not sure) None@A@AA@@AB       !"#$%&'()*++,-./ 01234Carte_6W2YSa82N5g9m4DwoXZ5u5Cartesian.Plane.UtilitiesCartesian.SpaceCartesian.Plane.Types"Cartesian.Plane.BoundingBox.LensesCartesian.Plane.BoundingBoxCartesian.PlaneCartesian.LensesdotmapdotwiseflipxflipyrealimagLineVectorvectordot euclidean magnitudemag intersect intersectsoverlap coefficients $fNumVector BoundingBox_centre_sizemakeBoundingBoxSideLenscentresizeleftrighttopbottomleftpadrightpadtoppad bottompad fromCornersfromCornerAndSize fromSidesLinear interceptslopePolygoninsideargumentargpolarsolve