>7U      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST Safe-Inferredscalar multiplication  dot product #euclidean distance between p and q U   UNone ?Class that indicates that something can be transformable using  an affine transformation =Basic linear algebra to support affine transformations in 2D %Type to represent a matrix, form is:  [ [ a11, a12, a13 ]  [ a21, a22, a23 ]  [ a31, a32, a33 ] ] Point based geometries NA class that defines a point2 functor. This defines that every operation that I we can do on a point we can also do on instances of this class. i.e. by 2 applying the operation on the underlying points. 7given a single list of 9 elements, construct a Matrix3 ?Given a 3x3 matrix as a list of lists, convert it to a Matrix3 IGather the elements of the matrix in one long list (in row by row order) V6Everything that is built from points is transformable WPoints are transformable  XYZ[V\W]^_       XYZ[V\W]^_None:A class of objects for which we can compute a boundingbox Bounding boxes KNote that a bounding box is always axis parallel, so rotating may have not  | the expected effect )get the bounding box of a list of things  !"#$%&`ab !"#$%& #$%&!"  !"#$%&`abNone(get the point at time t (t in [0,1]) +$The length of the line-like segment , Polylines .An infinite line 0BA simple line segment in 2D consisint of a start and an end-point 4Constructing polylines 5(functions on Linesegments and Polylines 8Linear interpolation / points on line segments etc. /simple linear interpolation, assuming t in [0,1] '()*+,-./0123456789cdefghijklm'()*+,-./01234567890123./,-456789)*+'('()*+,-./0123456789cdefghijklmNone:3A multipolygon consists of several simple polygons <MSimple polygons, i.e. polygons consisting of a sequence of points (vertices) N | such that the edges do not intersect. Simple polygons do not contain holes > Polygons GClass that defines what a polygon is. Note that it is assumed that the 4 first and the last point are *NOT* the same point. @3default implementation assumes points are in order n'Bounding boxes can be used as polygons :;<=>?@ABnopqrst :;<=>?@AB >?@AB<=:; :;<=>?@ABnopqrstNoneCfunctions on circles KClass expressing functions that circlelike objects all have. Like a center O and a radius. Minimal implementation is either getCircle or center and radius I=A disc in the plane (i.e. a circle inclusiding its contents) LA circle in the plane N(Checking if points lie in or on a circle/disc ,whether or not p lies in OR on the circle c O3whether or not p lies strictly inside the circle c P$whether or not p lies on the circle Q@whether or not a point lies in a disc: this includes its border R4whether or not a point lies strictly inside a disc. CDEFGHIJKLMNOPQRuvwxCDEFGHIJKLMNOPQRLMIJKCDEFGHNOPQR CDEFGHIJKLMNOPQRuvwxNoneSIA class to represent that a pair of geometry objects (both parameterized  over a) can be intersected. yOrepresents the intersection of a circle and an infinite line (as LineSegment ) zIntersection is symetrical A instance AreIntersectable g h a => AreIntersectable h g a where 5 intersectionPoints h g = intersectionPoints g h STy{|zSTSTSTy{|z}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~hgeometry-0.1.0.0Data.Geometry.PointData.Geometry.GeometryData.Geometry.BoundingBoxData.Geometry.LineData.Geometry.PolygonData.Geometry.CircleData.Geometry.SetOperationsPoint2'Point2|+||-||*||@|getXgetYdistIsTransformable transformWithMatrix3Vec3 HasPointspointsIsPoint2Functorp2fmapmatrix3FromListmatrix3FromLists matrix3ToListmatrix3ToListsidentityMatrix3 IsBoxable boundingBox bbFromList BoundingBox2' BoundingBox2 lowerLeft upperRight bbFromPoints mergeBoxeswidthheightbbLeftbbRightbbTopbbBottomLineLikepointAt HasLengthPMlength Polyline2' Polyline2Line2'Line2 LineSegment2' LineSegment2 startPointendPointpolyLine isSimpleLine toSimpleLinetoSimpleLineOptionlinear onLineSegment MultiPolygon' MultiPolygonSimplePolygon' SimplePolygon IsPolygonverticesedgesisSimple containsHoles IsCircleLike getCirclecenterradiusdistancedistanceToCenterDisc2'Disc2borderCircle2'Circle2inCircle insideCircleonCircleinDisc insideDiscAreIntersectableintersectionPoints$fFunctorPoint2'tranformPointBased$fIsTransformablePoint2' v3FromListv3ToList multiply3transformPoint$fIsTransformableg$fFunctorMatrix3 $fFunctorVec3$fHasPointsPoint2' $fIsBoxablep$fHasPointsBoundingBox2'$fIsPoint2FunctorBoundingBox2'$fLineLikeLineSegment2'$fHasLengthPolyline2'$fHasLengthLineSegment2'$fHasPointsPolyline2'$fIsPoint2FunctorPolyline2'$fHasPointsLine2'$fIsPoint2FunctorLine2'$fFunctorLine2'$fHasPointsLineSegment2'$fIsPoint2FunctorLineSegment2'$fFunctorLineSegment2'$fIsPolygonBoundingBox2'$fIsPoint2FunctorMultiPolygon'$fIsPolygonMultiPolygon'$fHasPointsMultiPolygon'$fIsPoint2FunctorSimplePolygon'$fIsPolygonSimplePolygon'$fHasPointsSimplePolygon'$fIsCircleLikeDisc2'$fIsCircleLikeCircle2'$fHasPointsDisc2'$fHasPointsCircle2' circleAndLine($fAreIntersectableCircle2'LineSegment2'a!$fAreIntersectableCircle2'Line2'a%$fAreIntersectableCircle2'Polyline2'a