public class HilbertCode extends Object
The planar Hilbert Curve is a continuous spacefilling curve. In the limit the Hilbert curve has infinitely many vertices and fills the space of the unit square. A sequence of finite approximations to the infinite Hilbert curve is defined by the level number. The finite Hilbert curve at level n H_{n} contains 2^{n + 1} points. Each finite Hilbert curve defines an ordering of the points in the 2dimensional range square containing the curve. Curves fills the range square of side 2^{level}. Curve points have ordinates in the range [0, 2^{level}  1]. The index of a point along a Hilbert curve is called the Hilbert code. The code for a given point is specific to the level chosen.
This implementation represents codes using 32bit integers. This allows levels 0 to 16 to be handled. The class supports encoding points in the range of a given level curve and decoding the point for a given code value.
The Hilbert order has the property that it tends to preserve locality. This means that codes which are near in value will have spatially proximate points. The converse is not always true  the delta between codes for nearby points is not always small. But the average delta is small enough that the Hilbert order is an effective way of linearizing space to support range queries.
HilbertCurveBuilder
,
MortonCode
Modifier and Type  Field and Description 

static int 
MAX_LEVEL
The maximum curve level that can be represented.

Constructor and Description 

HilbertCode() 
Modifier and Type  Method and Description 

static Coordinate 
decode(int level,
int index)
Computes the point on a Hilbert curve
of given level for a given code index.

static int 
encode(int level,
int x,
int y)
Encodes a point (x,y)
in the range of the the Hilbert curve at a given level
as the index of the point along the curve.

static int 
level(int numPoints)
The level of the finite Hilbert curve which contains at least
the given number of points.

static int 
maxOrdinate(int level)
The maximum ordinate value for points
in the curve for the given level.

static int 
size(int level)
The number of points in the curve for the given level.

public static final int MAX_LEVEL
public static int size(int level)
level
 the level of the curvepublic static int maxOrdinate(int level)
level
 the level of the curvepublic static int level(int numPoints)
numPoints
 the number of points requiredpublic static int encode(int level, int x, int y)
level
 the level of the Hilbert curvex
 the x ordinate of the pointy
 the y ordinate of the pointpublic static Coordinate decode(int level, int index)
level
 the Hilbert curve levelindex
 the index of the point on the curveCopyright © 2020. All rights reserved.