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
100 lines (98 loc) • 2.56 kB
JavaScript
import Orientation from '../algorithm/Orientation'
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()
DirectedEdge.constructor_.apply(this, arguments)
}
static constructor_() {
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
if (arguments.length === 0) {} else if (arguments.length === 4) {
const from = arguments[0], to = arguments[1], directionPt = arguments[2], 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)
}
}
static toEdges(dirEdges) {
const edges = new ArrayList()
for (let i = dirEdges.iterator(); i.hasNext(); )
edges.add(i.next()._parentEdge)
return edges
}
isRemoved() {
return this._parentEdge === null
}
compareDirection(e) {
if (this._quadrant > e._quadrant) return 1
if (this._quadrant < e._quadrant) return -1
return Orientation.index(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
}
get interfaces_() {
return [Comparable]
}
}