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
104 lines (102 loc) • 2.75 kB
JavaScript
import CGAlgorithms from '../algorithm/CGAlgorithms'
import Comparable from '../../../../java/lang/Comparable'
import Quadrant from './Quadrant'
import Assert from '../util/Assert'
export default class EdgeEnd {
constructor () {
this._edge = null
this._label = null
this._node = null
this._p0 = null
this._p1 = null
this._dx = null
this._dy = null
this._quadrant = null
if (arguments.length === 1) {
let edge = arguments[0]
this._edge = edge
} else if (arguments.length === 3) {
const edge = arguments[0]
const p0 = arguments[1]
const p1 = arguments[2]
const label = null
this._edge = edge
this.init(p0, p1)
this._label = label
} else if (arguments.length === 4) {
const edge = arguments[0]
const p0 = arguments[1]
const p1 = arguments[2]
const label = arguments[3]
this._edge = edge
this.init(p0, p1)
this._label = label
}
}
compareDirection (e) {
if (this._dx === e._dx && this._dy === e._dy) return 0
if (this._quadrant > e._quadrant) return 1
if (this._quadrant < e._quadrant) return -1
return CGAlgorithms.computeOrientation(e._p0, e._p1, this._p1)
}
getDy () {
return this._dy
}
getCoordinate () {
return this._p0
}
setNode (node) {
this._node = node
}
print (out) {
var angle = Math.atan2(this._dy, this._dx)
var className = this.getClass().getName()
var lastDotPos = className.lastIndexOf('.')
var name = className.substring(lastDotPos + 1)
out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label)
}
compareTo (obj) {
var e = obj
return this.compareDirection(e)
}
getDirectedCoordinate () {
return this._p1
}
getDx () {
return this._dx
}
getLabel () {
return this._label
}
getEdge () {
return this._edge
}
getQuadrant () {
return this._quadrant
}
getNode () {
return this._node
}
toString () {
var angle = Math.atan2(this._dy, this._dx)
var className = this.getClass().getName()
var lastDotPos = className.lastIndexOf('.')
var name = className.substring(lastDotPos + 1)
return ' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label
}
computeLabel (boundaryNodeRule) {}
init (p0, p1) {
this._p0 = p0
this._p1 = p1
this._dx = p1.x - p0.x
this._dy = p1.y - p0.y
this._quadrant = Quadrant.quadrant(this._dx, this._dy)
Assert.isTrue(!(this._dx === 0 && this._dy === 0), 'EdgeEnd with identical endpoints found')
}
interfaces_ () {
return [Comparable]
}
getClass () {
return EdgeEnd
}
}