node-red-contrib-tak-registration
Version:
A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK
46 lines (40 loc) • 836 B
JavaScript
import adder from "../adder";
import {sqrt} from "../math";
import noop from "../noop";
var lengthSum = adder(),
lengthRing,
x00,
y00,
x0,
y0;
var lengthStream = {
point: noop,
lineStart: function() {
lengthStream.point = lengthPointFirst;
},
lineEnd: function() {
if (lengthRing) lengthPoint(x00, y00);
lengthStream.point = noop;
},
polygonStart: function() {
lengthRing = true;
},
polygonEnd: function() {
lengthRing = null;
},
result: function() {
var length = +lengthSum;
lengthSum.reset();
return length;
}
};
function lengthPointFirst(x, y) {
lengthStream.point = lengthPoint;
x00 = x0 = x, y00 = y0 = y;
}
function lengthPoint(x, y) {
x0 -= x, y0 -= y;
lengthSum.add(sqrt(x0 * x0 + y0 * y0));
x0 = x, y0 = y;
}
export default lengthStream;