úÎ9'5ó     Safe"34568V4& IEnumerated type to indicate octants in 3D-space relative to given center.!Datatype for nodes within Octree.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  aThis function converts octant name to a function that steps down in an Octree towards this octant²Function 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.)ØInternal 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. here we assume that a, b, c > 0 (otherwise we will take abs, and correspondingly invert results) same octant dp = difference between given point and the center of Octree nodeList of all octant names.*Internal function that makes code clearer.jFinds 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.gGiven 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. FIXME: VERY IMPORTANT - add prop_splitBy vs cmpRComputes a center of mass for a given list of vectors - used to find a splitPoint..Helper function to map over an 8-element tuple7Maximum number of elements before Octree leaf is split.9Creates an Octree from a list of (index, payload) tuples.»Internal method, that splits a list into octants depending on coordinates, | and then applies a specified function to each of these sublists, | in order to create subnodes of the Octree[Internal method that prepends contents of the given subtree to a list | given as argument.bCreates an Octree from list, trying to keep split points near centers | of mass for each subtree.\Finds a path to a Leaf where a given point should be, | and returns a list of octant names.uApplies 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. | NOTE: insert accepts duplicate points, but lookup would not find them - use withinRange in such case.dDeletes a point from an Octree. | NOTE: If there are duplicate points, it only deletes one of them.…Deletes a point from an Octree with the provided equality check. | NOTE: If there are duplicate points, it only deletes one of them. ¥Internal: 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.!IInternal method that picks from a given list a point closest to argument, PReturns all points within Octree that are within a given distance from argument./ "#$%&'()*+,-./012345678 ! 9  "#$%&'() *+,-./012345SafeV5…   :      !"#$%&'()*+,-./0123456789:;<=%Octree-0.6.0.0-F8KBDhNW6Li5talRnmpl21 Data.OctreeData.Octree.InternalOctreeVector3distfromListtoListinsertdeletedeleteBylookupnearest withinRangedepthsizeODircmpjoinStep octreeStep splitStepoctantDistance'octantDistance allOctantsxortoggleoctantDistancessplitBy massCentertmap leafLimitsplitBy'toList'pathTo applyByPath candidates' pickClosestSWDSEDNWDNEDSWUSEUNWUNEUNodeLeafsplitnwunwdneunedswuswdseusedunLeafv3xv3yv3zsubnodes