index.js
function hilbertIndexInverse(dim, index, options) { // :: Int -> Int -> [Int, Int, ..]
    options = options || {}
    var entry = options.entry || 0,
        direction = options.direction || 0,
        m = curvePrecision(index, dim),
        p = Array.apply(null, new Array(dim)).map(Number.prototype.valueOf, 0)

    for (var i = m - 1; i >= 0; i--) {
        var mask = 1 << (i * dim), bits = 0, code

        for (var k = dim - 1; k >= 0; k--) {
            if (index & (mask << k)) {
                bits |= (1 << k)
            }
        }

        code = grayInverseTransform(entry, direction, grayCode(bits), dim)
        for (var k = 0; k < dim; k++) {
            if (code & (1 << k)) {
                p[k] |= (1 << i)
            }
        }

        entry = entry ^ bitwise.rotateLeft(entrySequence(bits), dim, 0, direction + 1)
        direction = (direction + directionSequence(bits, dim) + 1) % dim
    }
    return p
}
function hilbertIndexInverse(dim, index, options) { // :: Int -> Int -> [Int, Int, ..]
    options = options || {}
    var entry = options.entry || 0,
        direction = options.direction || 0,
        m = curvePrecision(index, dim),
        p = Array.apply(null, new Array(dim)).map(Number.prototype.valueOf, 0)

    for (var i = m - 1; i >= 0; i--) {
        var mask = 1 << (i * dim), bits = 0, code

        for (var k = dim - 1; k >= 0; k--) {
            if (index & (mask << k)) {
                bits |= (1 << k)
            }
        }

        code = grayInverseTransform(entry, direction, grayCode(bits), dim)
        for (var k = 0; k < dim; k++) {
            if (code & (1 << k)) {
                p[k] |= (1 << i)
            }
        }

        entry = entry ^ bitwise.rotateLeft(entrySequence(bits), dim, 0, direction + 1)
        direction = (direction + directionSequence(bits, dim) + 1) % dim
    }
    return p
}
function hilbertIndexInverse ( dim , index , options ) { // :: Int -> Int -> [Int, Int, ..] options = options || { } var entry = options . entry || 0 , direction = options . direction || 0 , m = curvePrecision ( index , dim ) , p = Array . apply ( null , new Array ( dim ) ) . map ( Number . prototype . valueOf , 0 ) for ( var i = m - 1 ; i >= 0 ; i -- ) { var mask = 1 << ( i * dim ) , bits = 0 , code for ( var k = dim - 1 ; k >= 0 ; k -- ) { if ( index & ( mask << k ) ) { bits |= ( 1 << k ) } } code = grayInverseTransform ( entry , direction , grayCode ( bits ) , dim ) for ( var k = 0 ; k < dim ; k ++ ) { if ( code & ( 1 << k ) ) { p [ k ] |= ( 1 << i ) } } entry = entry ^ bitwise . rotateLeft ( entrySequence ( bits ) , dim , 0 , direction + 1 ) direction = ( direction + directionSequence ( bits , dim ) + 1 ) % dim } return p }
Returns cardinal point given Hilbert index
Returns cardinal point given Hilbert index