Skip to content

Instantly share code, notes, and snippets.

@benfoxall
Created August 21, 2015 00:03
Show Gist options
  • Save benfoxall/2792544805ea77afc2d7 to your computer and use it in GitHub Desktop.
Save benfoxall/2792544805ea77afc2d7 to your computer and use it in GitHub Desktop.
function tobuffer(points){
var length = points.length;
var len = length * 4;
var buffer = new ArrayBuffer(len * 4);
var lats = new Float32Array(buffer, 0, len/4);
var lons = new Float32Array(buffer, len, len/4);
var alts = new Float32Array(buffer, len*2, len/4);
var refs = new Uint32Array (buffer, len*3, len/4);
points.forEach(function(p, i){
lats[i] = p[0];
lons[i] = p[1];
alts[i] = p[2];
refs[i] = p[3];
})
return {
data: buffer,
length: length,
lats: lats,
lons: lons,
alts: alts,
refs: refs
}
}
function combine(buffers){
// point length
var length = buffers.reduce(function(l, b){
return l + b.length;
}, 0);
// byte length
var len = length * 4;
var buffer = new ArrayBuffer(len * 4);
var lats = new Float32Array(buffer, 0, len/4);
var lons = new Float32Array(buffer, len, len/4);
var alts = new Float32Array(buffer, len*2, len/4);
var refs = new Uint32Array (buffer, len*3, len/4);
buffers.reduce(function(off, b){
lats.set(b.lats, off)
lons.set(b.lons, off)
alts.set(b.alts, off)
refs.set(b.refs, off)
return off + b.length;
}, 0)
return {
data: buffer,
length: length,
lats: lats,
lons: lons,
alts: alts,
refs: refs
}
}
b = tobuffer([
[.1,20,3,4],
[.2,20,4,4.4]
])
console.log(b);
console.log(b.lats);
console.log(b.lons);
console.log(b.alts);
console.log(b.refs);
var b2 = tobuffer([
[.3,21,5,4.2],
[.4,23,6,4]
])
console.log(b2);
console.log(b2.lats);
console.log(b2.lons);
console.log(b2.alts);
console.log(b2.refs);
var b3 = tobuffer([
[.5,24,7,4.2],
[.6,25,8,400]
])
console.log("combining");
var b4 = combine([b, b2, b3]);
console.log(b4);
console.log(b4.lats);
console.log(b4.lons);
console.log(b4.alts);
console.log(b4.refs);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment