Skip to content
This repository has been archived by the owner on Nov 30, 2023. It is now read-only.
/ hilbert Public archive

Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.

License

Notifications You must be signed in to change notification settings

google/hilbert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hilbert

Golang package for mapping values to and from a Hilbert Curve.

Image of 8 by 8 Hilbert curve

Converted from the code available on Wikipedia, with additional help from:

This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

How to use

go get github.com/google/hilbert
// Create a Hilbert Curve for mapping to and from a 16 by 16 space.
s, err := New(16)

// Now map one dimension numbers in the range [0, N*N-1], to an x,y
// coordinate on the curve where both x and y are in the range [0, N-1].
x, y, err := s.Map(t)

// Also map back from (x,y) to t.
t, err := s.MapInverse(x, y)

Demo

The demo directory contains an example on how to draw an image of a Hilbert curve, as well as animations of varying sized Hilbert spaces.

go run $GOPATH/src/github.com/google/hilbert/demo/demo.go

and the following two files are generated:

Image of 8 by 8 Hilbert curve

and an animation of N in the range 1..8:

Hilbert curve animation

Licence (Apache 2)

// Copyright 2015 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License.

About

Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages