úÎ7‚4n     NoneJEnumerated type to indicate octants in 3D-space relative to given center. "Datatype for nodes within Octree. norm of a vector distance between two vectors _Internal method that gives octant of a first vector relative to the second vector as a center. [Internal method that joins result of three coordinate comparisons and makes an octant name  bThis function converts octant name to a function that steps down in an Octree towards this octant wFunction that splits octant name into three boolean values, depending of sign of a relative coordinate in that octant. < | (Coordinate is relative to a split point within Octree.) cInternal function that finds a lower bound for a distance between a point of relative coordinates, _ | and octant of given name. It works only when coordinates of a given point are all positive.  | It is used only by ?, which respectively changes octant name depending of signs of  | relative coordinates. b here we assume that a, b, c > 0 (otherwise we will take abs, and correspondingly invert results)  same octant C dp = difference between given point and the center of Octree node List of all octant names. +Internal function that makes code clearer. <Finds a minimum bounds for a distance between a given point / | in relative coordinates and a given octant. @Toggles octant names depending on a signs of vector coordinates  | for use in octantDistance. hGiven a point in relative coordinates, gives list of all octants and minimum distances from this point. splits a list of vectors and payload tuples > | into a tuple with elements destined for different octants. 1 FIXME: VERY IMPORTANT - add prop_splitBy vs cmp SComputes a center of mass for a given list of vectors - used to find a splitPoint. /Helper function to map over an 8-element tuple 8Maximum number of elements before Octree leaf is split. :Creates an Octree from a list of (index, payload) tuples. KInternal method, that splits a list into octants depending on coordinates, D | and then applies a specified function to each of these sublists, - | in order to create subnodes of the Octree FInternal method that prepends contents of the given subtree to a list  | given as argument. FCreates an Octree from list, trying to keep split points near centers  | of mass for each subtree. !6Finds a path to a Leaf where a given point should be, ' | and returns a list of octant names. "OApplies a given function to a node specified by a path (list of octant names), ' | and then returns a modified Octree.  Inserts a point into an Octree. i | NOTE: insert accepts duplicate points, but lookup would not find them - use withinRange in such case. #IInternal: finds candidates for nearest neighbour lazily for each octant; ] | they are returned in a list of (octant, min. bound for distance, Maybe candidate) tuples. +Finds a given point, if it is in the tree. +Finds nearest neighbour for a given point. $KInternal method that picks from a given list a point closest to argument, QReturns all points within Octree that are within a given distance from argument. 7%&'()*+,-./012345678 !" # $9 : ;-%&'()*+,-./012345678 $ #,+*)('&% /-012345678. !" # $9 : ;None   <      !"#$%&'()*+,-./0123456789:;<=>?@ Octree-0.4 Data.OctreeData.Octree.InternalAC-Vector-2.3.2Data.Vector.V3v3zv3yv3xVector3OctreedistfromListtoListinsertlookupnearest withinRangedepthsizeODirnormcmpjoinStep octreeStep splitStepoctantDistance'octantDistance allOctantsxortoggleoctantDistancessplitBy massCentertmap leafLimitsplitBy'toList'pathTo applyByPath candidates' pickClosestNEUNWUSEUSWUNEDNWDSEDSWDLeafunLeafNodesplitnwunwdneunedswuswdseused pickClosersubnodes$fFunctorOctree