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
43 lines (42 loc) • 1.11 kB
JavaScript
import Interval from './Interval'
import DoubleBits from '../quadtree/DoubleBits'
export default class Key {
constructor() {
Key.constructor_.apply(this, arguments)
}
static constructor_() {
this._pt = 0.0
this._level = 0
this._interval = null
const interval = arguments[0]
this.computeKey(interval)
}
static computeLevel(interval) {
const dx = interval.getWidth()
const level = DoubleBits.exponent(dx) + 1
return level
}
getInterval() {
return this._interval
}
getLevel() {
return this._level
}
computeKey(itemInterval) {
this._level = Key.computeLevel(itemInterval)
this._interval = new Interval()
this.computeInterval(this._level, itemInterval)
while (!this._interval.contains(itemInterval)) {
this._level += 1
this.computeInterval(this._level, itemInterval)
}
}
computeInterval(level, itemInterval) {
const size = DoubleBits.powerOf2(level)
this._pt = Math.floor(itemInterval.getMin() / size) * size
this._interval.init(this._pt, this._pt + size)
}
getPoint() {
return this._pt
}
}