fast-morton
Version:
Fast morton encoding and decoding for 2D and 3D coordinates
3 lines (2 loc) • 774 B
JavaScript
var r=new Error("All input coords must be in Uint10 range (0 - 1023)"),n=new Error("Morton code must be in Uint32 range (0 - 65,535)"),t=[1023,0,50331903,50393103,51130563,153391689];function o(r){var n=r&t[0];return((n=((n=((n=(n|n<<16)&t[2])|n<<8)&t[3])|n<<4)&t[4])|n<<2)&t[5]}var e=[0,1023,50331903,50393103,51130563,153391689];function u(r){var n=r&e[5];return((n=((n=((n=(n^n>>2)&e[4])^n>>4)&e[3])^n>>8)&e[2])^n>>16)&e[1]}exports.morton3DDecode=function(r,t){if(r<0||r>4294967295)throw n;var o=null!=t?t:new Array(3);return o[0]=u(r),o[1]=u(r>>1),o[2]=u(r>>2),o},exports.morton3DEncode=function(n,t,e){if(!function(){return[].slice.call(arguments).every(function(r){return r>=0&&r<=1023})}(n,t,e))throw r;return o(n)|o(t)<<1|o(e)<<2};
//# sourceMappingURL=3d-mb.js.map