DoubleBits manipulates Double numbers
by using bit manipulation and bit-field extraction.
For some operations (such as determining the exponent)
this is more accurate than using mathematical operations
(which suffer from round-off error).
The algorithms and constants in this class
apply only to IEEE-754 double-precision floating point format.
Fibonacci Heap realization. Uses generic type T for data storage and TKey as a key type.
Implements the Fibonacchi heap class with the key of type double.
Represents the one node in the Fibonacci Heap.
Implementation of the Fibonacci heap node with key of type double.
Provides a test for whether an interval is
so small it should be considered as zero for the purposes of
inserting it into a binary tree.
The reason this check is necessary is that round-off error can
cause the algorithm used to subdivide an interval to fail, by
computing a midpoint value which does not lie strictly between the
2-dimensional tree node (for K2DTree<T>
suitable for most of spatial environment
Convenience class for k-dimensional tree static methods. To
create a new KdTree, specify the generic parameter as in
Base class for K-dimensional trees.
K-dimensional tree node (for KdTree).
Base class for K-dimensional tree nodes.
Collection of k-dimensional tree nodes.
List of k-dimensional tree nodes.
A Key is a unique identifier for a node in a quadtree.
It contains a lower-left point and a level number. The level number
is the power of two for the size of the node envelope.
Represents a node of a QuadTree<T>. Nodes contain
items which have a spatial extent corresponding to the node's position
in the quad-tree.
This class provides the data transfer container for a kd-tree node with its left and right side children.
A Quadtree is a spatial index structure for efficient range querying
of items bounded by 2D rectangles.
s can be indexed by using their s.
Any type of object can also be indexed, as long as it has an extent that can be
represented by an .
This Quadtree index provides a primary filter
for range rectangle queries. The various query methods return a list of
all items which may intersect the query rectangle. Note that
it may thus return items which do not in fact intersect the query rectangle.
A secondary filter is required to test for actual intersection
between the query rectangle and the envelope of each candidate item.
The secondary filter may be performed explicitly,
or it may be provided implicitly by subsequent operations executed on the items
(for instance, if the index query is followed by computing a spatial predicate
between the query geometry and tree items,
the envelope intersection check is performed automatically.
This implementation does not require specifying the extent of the inserted
items beforehand. It will automatically expand to accomodate any extent
This data structure is also known as an
QuadRoot is the root of a single Quadtree.
It is centred at the origin,
and does not have a defined extent.
This data transfer container, encapsulates the K2DTree<T> with all of its features
including the tree structure itself in form of NodeDataContainer<T>.
following the terminology usage of Samet and others.