@thi.ng/morton
Advanced tools
Comparing version 0.1.0 to 0.2.0
@@ -6,2 +6,13 @@ # Change Log | ||
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/morton@0.1.0...@thi.ng/morton@0.2.0) (2018-10-21) | ||
### Features | ||
* **morton:** update/add muxScaled2/3 versions, add error handling ([ac2f3e8](https://github.com/thi-ng/umbrella/commit/ac2f3e8)) | ||
# 0.1.0 (2018-10-17) | ||
@@ -8,0 +19,0 @@ |
@@ -17,6 +17,10 @@ export declare const encode5: (x: number) => number; | ||
export declare const demux3: (n: number) => number[]; | ||
export declare const muxScaled2: (x: number, y: number, min?: number, max?: number) => number; | ||
export declare const muxScaled3: (x: number, y: number, z: number, min?: number, max?: number) => number; | ||
export declare const demuxScaled2: (n: number, min?: number, max?: number) => number[]; | ||
export declare const demuxScaled3: (n: number, min?: number, max?: number) => number[]; | ||
export declare const muxScaled2: (x: number, y: number, minx?: number, maxx?: number, miny?: number, maxy?: number) => number; | ||
export declare const muxScaled3: (x: number, y: number, z: number, minx?: number, maxx?: number, miny?: number, maxy?: number, minz?: number, maxz?: number) => number; | ||
export declare const demuxScaled2: (n: number, minx?: number, maxx?: number, miny?: number, maxy?: number) => number[]; | ||
export declare const demuxScaled3: (n: number, minx?: number, maxx?: number, miny?: number, maxy?: number, minz?: number, maxz?: number) => number[]; | ||
export declare const muxScaled2v: (v: ArrayLike<number>, min?: ArrayLike<number>, max?: ArrayLike<number>) => number; | ||
export declare const muxScaled3v: (v: ArrayLike<number>, min?: ArrayLike<number>, max?: ArrayLike<number>) => number; | ||
export declare const demuxScaled2v: (n: number, min?: ArrayLike<number>, max?: ArrayLike<number>) => number[]; | ||
export declare const demuxScaled3v: (n: number, min?: ArrayLike<number>, max?: ArrayLike<number>) => number[]; | ||
export declare const treeToMorton: (t: number[], dim: number) => number; | ||
@@ -23,0 +27,0 @@ export declare const mortonToTree: (m: number, dim: number) => number[]; |
42
index.js
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const api_1 = require("@thi.ng/binary/api"); | ||
const pow_1 = require("@thi.ng/binary/pow"); | ||
const illegal_arguments_1 = require("@thi.ng/errors/illegal-arguments"); | ||
const fit_1 = require("@thi.ng/math/fit"); | ||
const interval_1 = require("@thi.ng/math/interval"); | ||
const MIN = [0, 0, 0]; | ||
const MAX = [1, 1, 1]; | ||
exports.encode5 = (x) => { | ||
@@ -50,5 +55,8 @@ x &= 0x0000001f; | ||
}; | ||
exports.encodeScaled5 = (x, min = 0, max = 1) => exports.encode5(Math.round(fit_1.fit(x, min, max, 0, 0x1f))); | ||
exports.encodeScaled10 = (x, min = 0, max = 1) => exports.encode10(Math.round(fit_1.fit(x, min, max, 0, 0x3ff))); | ||
exports.encodeScaled16 = (x, min = 0, max = 1) => exports.encode16(Math.round(fit_1.fit(x, min, max, 0, 0xffff))); | ||
const prescale = (x, min, max, bits) => !interval_1.inRange(x, min, max) ? | ||
illegal_arguments_1.illegalArgs(`value ${x} not in range [${min}..${max}]`) : | ||
Math.round(fit_1.fit(x, min, max, 0, api_1.MASKS[bits])); | ||
exports.encodeScaled5 = (x, min = 0, max = 1) => exports.encode5(prescale(x, min, max, 5)); | ||
exports.encodeScaled10 = (x, min = 0, max = 1) => exports.encode10(prescale(x, min, max, 10)); | ||
exports.encodeScaled16 = (x, min = 0, max = 1) => exports.encode16(prescale(x, min, max, 16)); | ||
exports.decodeScaled5 = (x, min = 0, max = 1) => fit_1.fit01(exports.decode5(x) / 0x1f, min, max); | ||
@@ -61,16 +69,20 @@ exports.decodeScaled10 = (x, min = 0, max = 1) => fit_1.fit01(exports.decode10(x) / 0x3ff, min, max); | ||
exports.demux3 = (n) => [exports.decode10(n), exports.decode10(n >>> 1), exports.decode10(n >>> 2)]; | ||
exports.muxScaled2 = (x, y, min = 0, max = 1) => (exports.encodeScaled16(x, min, max) | | ||
exports.encodeScaled16(y, min, max) << 1) >>> 0; | ||
exports.muxScaled3 = (x, y, z, min = 0, max = 1) => (exports.encodeScaled10(x, min, max) | | ||
exports.encodeScaled10(y, min, max) << 1 | | ||
exports.encodeScaled10(z, min, max) << 2) >>> 0; | ||
exports.demuxScaled2 = (n, min = 0, max = 1) => [ | ||
exports.decodeScaled16(n, min, max), | ||
exports.decodeScaled16(n >>> 1, min, max) | ||
exports.muxScaled2 = (x, y, minx = 0, maxx = 1, miny = minx, maxy = maxx) => (exports.encodeScaled16(x, minx, maxx) | | ||
exports.encodeScaled16(y, miny, maxy) << 1) >>> 0; | ||
exports.muxScaled3 = (x, y, z, minx = 0, maxx = 1, miny = minx, maxy = maxx, minz = minx, maxz = maxx) => (exports.encodeScaled10(x, minx, maxx) | | ||
exports.encodeScaled10(y, miny, maxy) << 1 | | ||
exports.encodeScaled10(z, minz, maxz) << 2) >>> 0; | ||
exports.demuxScaled2 = (n, minx = 0, maxx = 1, miny = minx, maxy = maxx) => [ | ||
exports.decodeScaled16(n, minx, maxx), | ||
exports.decodeScaled16(n >>> 1, miny, maxy) | ||
]; | ||
exports.demuxScaled3 = (n, min = 0, max = 1) => [ | ||
exports.decodeScaled10(n, min, max), | ||
exports.decodeScaled10(n >>> 1, min, max), | ||
exports.decodeScaled10(n >>> 2, min, max) | ||
exports.demuxScaled3 = (n, minx = 0, maxx = 1, miny = minx, maxy = maxx, minz = minx, maxz = maxx) => [ | ||
exports.decodeScaled10(n, minx, maxx), | ||
exports.decodeScaled10(n >>> 1, miny, maxy), | ||
exports.decodeScaled10(n >>> 2, minz, maxz) | ||
]; | ||
exports.muxScaled2v = (v, min = MIN, max = MAX) => exports.muxScaled2(v[0], v[1], min[0], max[0], min[1], max[1]); | ||
exports.muxScaled3v = (v, min = MIN, max = MAX) => exports.muxScaled3(v[0], v[1], v[2], min[0], max[0], min[1], max[1], min[2], max[2]); | ||
exports.demuxScaled2v = (n, min = MIN, max = MAX) => exports.demuxScaled2(n, min[0], max[0], min[1], max[1]); | ||
exports.demuxScaled3v = (n, min = MIN, max = MAX) => exports.demuxScaled3(n, min[0], max[0], min[1], max[1], min[2], max[2]); | ||
exports.treeToMorton = (t, dim) => { | ||
@@ -77,0 +89,0 @@ let n = 0; |
{ | ||
"name": "@thi.ng/morton", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Z-order-curve / Morton encoding & decoding for 1D, 2D, 3D", | ||
@@ -24,11 +24,12 @@ "main": "./index.js", | ||
"@types/mocha": "^5.2.5", | ||
"@types/node": "^10.5.5", | ||
"@types/node": "^10.12.0", | ||
"mocha": "^5.2.0", | ||
"nyc": "^12.0.2", | ||
"typedoc": "^0.11.1", | ||
"typescript": "^3.0.1" | ||
"nyc": "^13.1.0", | ||
"typedoc": "^0.13.0", | ||
"typescript": "^3.1.3" | ||
}, | ||
"dependencies": { | ||
"@thi.ng/binary": "^0.1.0", | ||
"@thi.ng/math": "^0.1.0" | ||
"@thi.ng/binary": "^0.1.1", | ||
"@thi.ng/errors": "^0.1.11", | ||
"@thi.ng/math": "^0.2.0" | ||
}, | ||
@@ -47,3 +48,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "6e563377f8cdbdda904559c956a2a558eb9fed64" | ||
"gitHead": "5bb513915cb3c533bd4278f6f365389b3664f4d1" | ||
} |
23119
160
3
+ Added@thi.ng/errors@^0.1.11
+ Added@thi.ng/errors@0.1.12(transitive)
+ Added@thi.ng/math@0.2.2(transitive)
- Removed@thi.ng/math@0.1.0(transitive)
Updated@thi.ng/binary@^0.1.1
Updated@thi.ng/math@^0.2.0