UNPKG

jsts

Version:

A JavaScript library of spatial predicates and functions for processing geometry

43 lines (42 loc) 1.12 kB
import Interval from './Interval.js' import DoubleBits from '../quadtree/DoubleBits.js' 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 } 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 } getInterval() { return this._interval } getLevel() { return this._level } }