Neoclassical Piano Montage
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    mortonpublic

    NAME

    node-morton - Calculates morton numbers and Z-order codes for spatial indexing.

    USAGE

    Install with npm install morton.

    var morton = require('morton');
    
    morton(32, 436);          // => 167456
    
    morton.code(1, 0, 1);     // => 140737488355328
    morton.code(2, 0, 2);     // => 140737488355328
    morton.code(3, 0, 4);     // => 140737488355328
    morton.code(4, 0, 8);     // => 140737488355328
    
    morton.range(1, 0, 0);    // => [              0,   70368744177663 ]
    morton.range(1, 1, 0);    // => [  70368744177664, 140737488355327 ]
    morton.range(1, 0, 1);    // => [ 140737488355328, 211106232532991 ]
    morton.range(1, 1, 1);    // => [ 211106232532992, 281474976710655 ]
    

    Note: input numbers must be smaller than 2^24 (16777216). Since the resulting output has twice as many bits, you'll get back numbers that are up to 2^48 (281474976710656). JavaScript can still represent these numbers without losing precision, however, you can't use bitwise operators on these numbers if your input numbers are potentially bigger than 2^15 (32768) because JavaScript only supports bitwise operators on 32 bit signed integers.

    morton.code(z, x, y) returns a 48-bit Z-order code.

    morton.range(z, x, y) will return an array of the lower and upper bound of the Z-order rectangle. See also Z-order curves in Wikipedia.

    [x, y] = morton.reverse(c) reverses c = morton(x, y).

    [x, y] = morton.decode(z, c) reverses c = morton.code(z, x, y).

    TESTS

    expresso is required to run unit tests.

    npm install expresso
    expresso
    

    CONTRIBUTORS

    ACKNOWLEDGEMENTS

    Thanks to Sean Eron Anderson for his Bit Twiddling Hacks page.

    LICENSE

    node-morton is BSD licensed.

    Keywords

    none

    install

    npm i morton

    Downloadsweekly downloads

    7

    version

    1.0.2

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar