UNPKG

fast-morton

Version:

Fast morton encoding and decoding for 2D and 3D coordinates

3 lines (2 loc) 952 B
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n||self).fastMorton={})}(this,function(n){var e=new Error("All input coords must be in Uint10 range (0 - 1023)"),r=new Error("Morton code must be in Uint32 range (0 - 65,535)"),o=[1023,0,50331903,50393103,51130563,153391689];function t(n){var e=n&o[0];return((e=((e=((e=(e|e<<16)&o[2])|e<<8)&o[3])|e<<4)&o[4])|e<<2)&o[5]}var i=[0,1023,50331903,50393103,51130563,153391689];function f(n){var e=n&i[5];return((e=((e=((e=(e^e>>2)&i[4])^e>>4)&i[3])^e>>8)&i[2])^e>>16)&i[1]}n.morton3DDecode=function(n,e){if(n<0||n>4294967295)throw r;var o=null!=e?e:new Array(3);return o[0]=f(n),o[1]=f(n>>1),o[2]=f(n>>2),o},n.morton3DEncode=function(n,r,o){if(!function(){return[].slice.call(arguments).every(function(n){return n>=0&&n<=1023})}(n,r,o))throw e;return t(n)|t(r)<<1|t(o)<<2}}); //# sourceMappingURL=3d-mb.umd.js.map