fix psimpl
This commit is contained in:
parent
f3693f357a
commit
848f7af64a
@ -14,13 +14,16 @@
|
|||||||
import wasmModuleFactory from './psimpl.js'
|
import wasmModuleFactory from './psimpl.js'
|
||||||
import wasmUrl from './psimpl.wasm'
|
import wasmUrl from './psimpl.wasm'
|
||||||
|
|
||||||
import { initEmscriptenModule } from '../../lib/initEmscripten.js'
|
import { initEmscriptenModule } from '../../lib/wasm-util/initEmscripten.js'
|
||||||
import { storeCoords, unflattenCoords } from '../../lib/heapUtil.js'
|
import {
|
||||||
|
storeCoords,
|
||||||
|
unflattenCoords
|
||||||
|
} from '../../lib/wasm-util/coordinates.js'
|
||||||
|
|
||||||
export async function simplify_nth_point(coords, tol) {
|
export async function simplify_nth_point(coords, n) {
|
||||||
const module = await getModule()
|
const module = await getModule()
|
||||||
const buffer = storeCoords(module, coords)
|
const buffer = storeCoords(module, coords)
|
||||||
const result = module.nth_point(buffer, coords.length * 2, tol)
|
const result = module.nth_point(buffer, coords.length * 2, n)
|
||||||
module._free(buffer)
|
module._free(buffer)
|
||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
@ -33,10 +36,15 @@ export async function simplify_radial_distance(coords, tol) {
|
|||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function simplify_perpendicular_distance(coords, tol) {
|
export async function simplify_perpendicular_distance(coords, tol, repeat) {
|
||||||
const module = await getModule()
|
const module = await getModule()
|
||||||
const buffer = storeCoords(module, coords)
|
const buffer = storeCoords(module, coords)
|
||||||
const result = module.perpendicular_distance(buffer, coords.length * 2, tol)
|
const result = module.perpendicular_distance(
|
||||||
|
buffer,
|
||||||
|
coords.length * 2,
|
||||||
|
tol,
|
||||||
|
repeat
|
||||||
|
)
|
||||||
module._free(buffer)
|
module._free(buffer)
|
||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
@ -49,18 +57,18 @@ export async function simplify_reumann_witkam(coords, tol) {
|
|||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function simplify_opheim(coords, tol) {
|
export async function simplify_opheim(coords, minTol, maxTol) {
|
||||||
const module = await getModule()
|
const module = await getModule()
|
||||||
const buffer = storeCoords(module, coords)
|
const buffer = storeCoords(module, coords)
|
||||||
const result = module.opheim(buffer, coords.length * 2, tol)
|
const result = module.opheim(buffer, coords.length * 2, minTol, maxTol)
|
||||||
module._free(buffer)
|
module._free(buffer)
|
||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function simplify_lang(coords, tol) {
|
export async function simplify_lang(coords, tol, lookAhead) {
|
||||||
const module = await getModule()
|
const module = await getModule()
|
||||||
const buffer = storeCoords(module, coords)
|
const buffer = storeCoords(module, coords)
|
||||||
const result = module.lang(buffer, coords.length * 2, tol)
|
const result = module.lang(buffer, coords.length * 2, tol, lookAhead)
|
||||||
module._free(buffer)
|
module._free(buffer)
|
||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
@ -73,10 +81,10 @@ export async function simplify_douglas_peucker(coords, tol) {
|
|||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function simplify_douglas_peucker_n(coords, tol) {
|
export async function simplify_douglas_peucker_n(coords, count) {
|
||||||
const module = await getModule()
|
const module = await getModule()
|
||||||
const buffer = storeCoords(module, coords)
|
const buffer = storeCoords(module, coords)
|
||||||
const result = module.douglas_peucker_n(buffer, coords.length * 2, tol)
|
const result = module.douglas_peucker_n(buffer, coords.length * 2, count)
|
||||||
module._free(buffer)
|
module._free(buffer)
|
||||||
return unflattenCoords(result)
|
return unflattenCoords(result)
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,11 @@ val radial_distance(uintptr_t ptr, int length, double tol) {
|
|||||||
return val(typed_memory_view(resultCoords.size(), &resultCoords[0]));
|
return val(typed_memory_view(resultCoords.size(), &resultCoords[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
val perpendicular_distance(uintptr_t ptr, int length, unsigned repeat) {
|
val perpendicular_distance(uintptr_t ptr, int length, double tol, unsigned repeat) {
|
||||||
double* begin = reinterpret_cast<double*>(ptr);
|
double* begin = reinterpret_cast<double*>(ptr);
|
||||||
double* end = begin + length;
|
double* end = begin + length;
|
||||||
std::vector<double> resultCoords;
|
std::vector<double> resultCoords;
|
||||||
psimpl::simplify_perpendicular_distance<2>(begin, end, repeat, std::back_inserter(resultCoords));
|
psimpl::simplify_perpendicular_distance<2>(begin, end, tol, repeat, std::back_inserter(resultCoords));
|
||||||
return val(typed_memory_view(resultCoords.size(), &resultCoords[0]));
|
return val(typed_memory_view(resultCoords.size(), &resultCoords[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ var E=0,za=null,G=null;d.preloadedImages={};d.preloadedAudios={};function Aa(){v
|
|||||||
function Ea(){return d.wasmBinary||!r&&!u||"function"!==typeof fetch?new Promise(function(a){a(Ca())}):fetch(H,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+H+"'";return a.arrayBuffer()}).catch(function(){return Ca()})}
|
function Ea(){return d.wasmBinary||!r&&!u||"function"!==typeof fetch?new Promise(function(a){a(Ca())}):fetch(H,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+H+"'";return a.arrayBuffer()}).catch(function(){return Ca()})}
|
||||||
function Fa(a){function b(a){d.asm=a.exports;E--;d.monitorRunDependencies&&d.monitorRunDependencies(E);0==E&&(null!==za&&(clearInterval(za),za=null),G&&(a=G,G=null,a()))}function c(a){b(a.instance)}function e(a){Ea().then(function(a){return WebAssembly.instantiate(a,f)}).then(a,function(a){y("failed to asynchronously prepare wasm: "+a);w(a)})}var f={env:a,global:{NaN:NaN,Infinity:Infinity},"global.Math":Math,asm2wasm:fa};E++;d.monitorRunDependencies&&d.monitorRunDependencies(E);if(d.instantiateWasm)try{return d.instantiateWasm(f,
|
function Fa(a){function b(a){d.asm=a.exports;E--;d.monitorRunDependencies&&d.monitorRunDependencies(E);0==E&&(null!==za&&(clearInterval(za),za=null),G&&(a=G,G=null,a()))}function c(a){b(a.instance)}function e(a){Ea().then(function(a){return WebAssembly.instantiate(a,f)}).then(a,function(a){y("failed to asynchronously prepare wasm: "+a);w(a)})}var f={env:a,global:{NaN:NaN,Infinity:Infinity},"global.Math":Math,asm2wasm:fa};E++;d.monitorRunDependencies&&d.monitorRunDependencies(E);if(d.instantiateWasm)try{return d.instantiateWasm(f,
|
||||||
b)}catch(g){return y("Module.instantiateWasm callback failed with error: "+g),!1}d.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||Aa()||"function"!==typeof fetch?e(c):WebAssembly.instantiateStreaming(fetch(H,{credentials:"same-origin"}),f).then(c,function(a){y("wasm streaming compile failed: "+a);y("falling back to ArrayBuffer instantiation");e(c)});return{}}
|
b)}catch(g){return y("Module.instantiateWasm callback failed with error: "+g),!1}d.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||Aa()||"function"!==typeof fetch?e(c):WebAssembly.instantiateStreaming(fetch(H,{credentials:"same-origin"}),f).then(c,function(a){y("wasm streaming compile failed: "+a);y("falling back to ArrayBuffer instantiation");e(c)});return{}}
|
||||||
d.asm=function(a,b){b.memory=z;b.table=new WebAssembly.Table({initial:94,maximum:94,element:"anyfunc"});b.__memory_base=1024;b.__table_base=0;return Fa(b)};ua.push({Ea:function(){Ga()}});function Ha(){return!!Ha.ya}var Ia=[null,[],[]],I=0;function J(){I+=4;return C[I-4>>2]}var Ja={};function Ka(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var La=void 0;function K(a){for(var b="";A[a];)b+=La[A[a++]];return b}
|
d.asm=function(a,b){b.memory=z;b.table=new WebAssembly.Table({initial:96,maximum:96,element:"anyfunc"});b.__memory_base=1024;b.__table_base=0;return Fa(b)};ua.push({Ea:function(){Ga()}});function Ha(){return!!Ha.ya}var Ia=[null,[],[]],I=0;function J(){I+=4;return C[I-4>>2]}var Ja={};function Ka(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var La=void 0;function K(a){for(var b="";A[a];)b+=La[A[a++]];return b}
|
||||||
var L={},M={},Ma={};function Na(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Oa(a,b){a=Na(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}
|
var L={},M={},Ma={};function Na(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Oa(a,b){a=Na(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}
|
||||||
function Pa(a){var b=Error,c=Oa(a,function(b){this.name=a;this.message=b;b=Error(b).stack;void 0!==b&&(this.stack=this.toString()+"\n"+b.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var N=void 0;function O(a){throw new N(a);}var Qa=void 0;function Ra(a){throw new Qa(a);}
|
function Pa(a){var b=Error,c=Oa(a,function(b){this.name=a;this.message=b;b=Error(b).stack;void 0!==b&&(this.stack=this.toString()+"\n"+b.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var N=void 0;function O(a){throw new N(a);}var Qa=void 0;function Ra(a){throw new Qa(a);}
|
||||||
function P(a,b,c){function e(b){b=c(b);b.length!==a.length&&Ra("Mismatched type converter count");for(var e=0;e<a.length;++e)Q(a[e],b[e])}a.forEach(function(a){Ma[a]=b});var f=Array(b.length),g=[],h=0;b.forEach(function(a,b){M.hasOwnProperty(a)?f[b]=M[a]:(g.push(a),L.hasOwnProperty(a)||(L[a]=[]),L[a].push(function(){f[b]=M[a];++h;h===g.length&&e(f)}))});0===g.length&&e(f)}
|
function P(a,b,c){function e(b){b=c(b);b.length!==a.length&&Ra("Mismatched type converter count");for(var e=0;e<a.length;++e)Q(a[e],b[e])}a.forEach(function(a){Ma[a]=b});var f=Array(b.length),g=[],h=0;b.forEach(function(a,b){M.hasOwnProperty(a)?f[b]=M[a]:(g.push(a),L.hasOwnProperty(a)||(L[a]=[]),L[a].push(function(){f[b]=M[a];++h;h===g.length&&e(f)}))});0===g.length&&e(f)}
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user