UNPKG

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.41 kB
import Comparable from '../../../../java/lang/Comparable' import CoordinateArrays from '../geom/CoordinateArrays' export default class OrientedCoordinateArray { constructor () { this._pts = null this._orientation = null const pts = arguments[0] this._pts = pts this._orientation = OrientedCoordinateArray.orientation(pts) } compareTo (o1) { const oca = o1 const comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation) return comp } interfaces_ () { return [Comparable] } getClass () { return OrientedCoordinateArray } static orientation (pts) { return CoordinateArrays.increasingDirection(pts) === 1 } static compareOriented (pts1, orientation1, pts2, orientation2) { const dir1 = orientation1 ? 1 : -1 const dir2 = orientation2 ? 1 : -1 const limit1 = orientation1 ? pts1.length : -1 const limit2 = orientation2 ? pts2.length : -1 let i1 = orientation1 ? 0 : pts1.length - 1 let i2 = orientation2 ? 0 : pts2.length - 1 // const comp = 0 while (true) { const compPt = pts1[i1].compareTo(pts2[i2]) if (compPt !== 0) return compPt i1 += dir1 i2 += dir2 const done1 = i1 === limit1 const done2 = i2 === limit2 if (done1 && !done2) return -1 if (!done1 && done2) return 1 if (done1 && done2) return 0 } } }