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
95 lines (94 loc) • 2.7 kB
JavaScript
import Orientation from '../algorithm/Orientation'
import Comparable from '../../../../java/lang/Comparable'
import Quadrant from './Quadrant'
import Assert from '../util/Assert'
export default class EdgeEnd {
constructor() {
EdgeEnd.constructor_.apply(this, arguments)
}
static 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) {
const edge = arguments[0]
this._edge = edge
} else if (arguments.length === 3) {
const edge = arguments[0], p0 = arguments[1], p1 = arguments[2]
EdgeEnd.constructor_.call(this, edge, p0, p1, null)
} else if (arguments.length === 4) {
const edge = arguments[0], p0 = arguments[1], p1 = arguments[2], label = arguments[3]
EdgeEnd.constructor_.call(this, 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 Orientation.index(e._p0, e._p1, this._p1)
}
getDy() {
return this._dy
}
getCoordinate() {
return this._p0
}
setNode(node) {
this._node = node
}
print(out) {
const angle = Math.atan2(this._dy, this._dx)
const className = this.getClass().getName()
const lastDotPos = className.lastIndexOf('.')
const name = className.substring(lastDotPos + 1)
out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label)
}
compareTo(obj) {
const 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() {
const angle = Math.atan2(this._dy, this._dx)
const className = this.getClass().getName()
const lastDotPos = className.lastIndexOf('.')
const 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')
}
get interfaces_() {
return [Comparable]
}
}