A DistanceMeasure
is used in nearest neighbour search,
in order to allow different ways points and children are
favoured or filtered during the search.
A three dimensional cube.
A three dimensional cube.
Wikipedia: "Usually, the octant with all three positive coordinates is referred to as the first octant. There is no generally used naming convention for the other seven octants."
However the article suggests (given that we count from zero): - 0 (binary 000) - top-front-left - 1 (binary 001) - top-back-right - 2 (binary 010) - top-back-left - 3 (binary 011) - top-front-left - 4 (binary 100) - bottom-front-left - 5 (binary 101) - bottom-back-left - 6 (binary 110) - bottom-back-right - 7 (binary 111) - bottom-front-right
Obviously there is no clear connection between the orientation and the binary representation. We thus prefer to chose the the octants numbering in a binary fashion, assigning bit 0 to the x-axis, bit 1 to the y-axis, and bit 2 to the z-axis, where top-front-left is 000, hence:
- 0 (binary 000) - left-top-front - 1 (binary 001) - right-top-front - 2 (binary 010) - left-bottom-front - 3 (binary 011) - right-bottom-front - 4 (binary 100) - left-top-back - 5 (binary 101) - right-top-back - 6 (binary 110) - left-bottom-back - 7 (binary 111) - right-bottom-back
An n-dimensional hyper rectangular.
An n-dimensional hyper rectangular.
pairs of minimum and maximum coordinates for each dimension. In each tuple,
_1
must be <=
_2
. The maximum coordinates are inclusive (defining the maximum
coordinate **within** the shape), thus it is not possible to create rectangles with
side lengths of zero.
An n-dimensional rectangular query shape.
A 2D rectangular query shape.
A 2D rectangular query shape.
A shape for range queries.
A shape for range queries. Type A
indicates the results
of area calculations, and may be specialized.
A Space
abstracts over the number of dimensions
that are used for point and hypercube operations.
A Space
abstracts over the number of dimensions
that are used for point and hypercube operations.
Big thanks to Aleksey Nikiforov for figuring out how to plug the types together...
Provides spaces in which coordinates are expressed using Long
values.
Provides spaces in which coordinates are expressed using Long
values.
Note that the current implementation due to performance considerations
requires that the coordinates are clipped to 62-bit range. That is,
they should be >= -0x2000000000000000L and < 0x2000000000000000L
A
DistanceMeasure
is used in nearest neighbour search, in order to allow different ways points and children are favoured or filtered during the search.For simplicity and performance, the measures, although they could be generalized as
Ordered
, are given asLong
values. Only comparisons are performed with the results, therefore some optimizations may be made, for example theeuclidean
measure omits taking the square root of the distances, while still preserving the ordering between the possible results.