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
47 lines (45 loc) • 1.12 kB
JavaScript
import Interval from './Interval'
import DoubleBits from '../quadtree/DoubleBits'
export default class Key {
constructor () {
this._pt = 0.0
this._level = 0
this._interval = null
const interval = arguments[0]
this.computeKey(interval)
}
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
}
interfaces_ () {
return []
}
getClass () {
return Key
}
static computeLevel (interval) {
const dx = interval.getWidth()
const level = DoubleBits.exponent(dx) + 1
return level
}
}