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

49 lines (47 loc) 1.45 kB
import Assert from '../util/Assert' export default class SegmentPointComparator { interfaces_ () { return [] } getClass () { return SegmentPointComparator } static relativeSign (x0, x1) { if (x0 < x1) return -1 if (x0 > x1) return 1 return 0 } static compare (octant, p0, p1) { if (p0.equals2D(p1)) return 0 var xSign = SegmentPointComparator.relativeSign(p0.x, p1.x) var ySign = SegmentPointComparator.relativeSign(p0.y, p1.y) switch (octant) { case 0: return SegmentPointComparator.compareValue(xSign, ySign) case 1: return SegmentPointComparator.compareValue(ySign, xSign) case 2: return SegmentPointComparator.compareValue(ySign, -xSign) case 3: return SegmentPointComparator.compareValue(-xSign, ySign) case 4: return SegmentPointComparator.compareValue(-xSign, -ySign) case 5: return SegmentPointComparator.compareValue(-ySign, -xSign) case 6: return SegmentPointComparator.compareValue(-ySign, xSign) case 7: return SegmentPointComparator.compareValue(xSign, -ySign) default: } Assert.shouldNeverReachHere('invalid octant value') return 0 } static compareValue (compareSign0, compareSign1) { if (compareSign0 < 0) return -1 if (compareSign0 > 0) return 1 if (compareSign1 < 0) return -1 if (compareSign1 > 0) return 1 return 0 } }