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
102 lines (100 loc) • 2.49 kB
JavaScript
import CGAlgorithms from '../algorithm/CGAlgorithms'
import Comparable from '../../../../java/lang/Comparable'
import ArrayList from '../../../../java/util/ArrayList'
import Quadrant from '../geomgraph/Quadrant'
import GraphComponent from './GraphComponent'
export default class DirectedEdge extends GraphComponent {
constructor () {
super()
this._parentEdge = null
this._from = null
this._to = null
this._p0 = null
this._p1 = null
this._sym = null
this._edgeDirection = null
this._quadrant = null
this._angle = null
const from = arguments[0]
const to = arguments[1]
const directionPt = arguments[2]
const edgeDirection = arguments[3]
this._from = from
this._to = to
this._edgeDirection = edgeDirection
this._p0 = from.getCoordinate()
this._p1 = directionPt
const dx = this._p1.x - this._p0.x
const dy = this._p1.y - this._p0.y
this._quadrant = Quadrant.quadrant(dx, dy)
this._angle = Math.atan2(dy, dx)
}
isRemoved () {
return this._parentEdge === null
}
compareDirection (e) {
if (this._quadrant > e._quadrant) return 1
if (this._quadrant < e._quadrant) return -1
return CGAlgorithms.computeOrientation(e._p0, e._p1, this._p1)
}
getCoordinate () {
return this._from.getCoordinate()
}
print (out) {
const className = this.getClass().getName()
const lastDotPos = className.lastIndexOf('.')
const name = className.substring(lastDotPos + 1)
out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + this._angle)
}
getDirectionPt () {
return this._p1
}
getAngle () {
return this._angle
}
compareTo (obj) {
const de = obj
return this.compareDirection(de)
}
getFromNode () {
return this._from
}
getSym () {
return this._sym
}
setEdge (parentEdge) {
this._parentEdge = parentEdge
}
remove () {
this._sym = null
this._parentEdge = null
}
getEdge () {
return this._parentEdge
}
getQuadrant () {
return this._quadrant
}
setSym (sym) {
this._sym = sym
}
getToNode () {
return this._to
}
getEdgeDirection () {
return this._edgeDirection
}
interfaces_ () {
return [Comparable]
}
getClass () {
return DirectedEdge
}
static toEdges (dirEdges) {
const edges = new ArrayList()
for (const i = dirEdges.iterator(); i.hasNext();) {
edges.add(i.next()._parentEdge)
}
return edges
}
}