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

52 lines (50 loc) 1.65 kB
import Coordinate from '../../../geom/Coordinate' import ArrayList from '../../../../../../java/util/ArrayList' import LinearComponentExtracter from '../../../geom/util/LinearComponentExtracter' export default class OffsetPointGenerator { constructor() { OffsetPointGenerator.constructor_.apply(this, arguments) } static constructor_() { this._g = null this._doLeft = true this._doRight = true const g = arguments[0] this._g = g } extractPoints(line, offsetDistance, offsetPts) { const pts = line.getCoordinates() for (let i = 0; i < pts.length - 1; i++) this.computeOffsetPoints(pts[i], pts[i + 1], offsetDistance, offsetPts) } setSidesToGenerate(doLeft, doRight) { this._doLeft = doLeft this._doRight = doRight } getPoints(offsetDistance) { const offsetPts = new ArrayList() const lines = LinearComponentExtracter.getLines(this._g) for (let i = lines.iterator(); i.hasNext(); ) { const line = i.next() this.extractPoints(line, offsetDistance, offsetPts) } return offsetPts } computeOffsetPoints(p0, p1, offsetDistance, offsetPts) { const dx = p1.x - p0.x const dy = p1.y - p0.y const len = Math.sqrt(dx * dx + dy * dy) const ux = offsetDistance * dx / len const uy = offsetDistance * dy / len const midX = (p1.x + p0.x) / 2 const midY = (p1.y + p0.y) / 2 if (this._doLeft) { const offsetLeft = new Coordinate(midX - uy, midY + ux) offsetPts.add(offsetLeft) } if (this._doRight) { const offsetRight = new Coordinate(midX + uy, midY - ux) offsetPts.add(offsetRight) } } }