+++ /dev/null
-package tim.prune.function.sew;
-
-import tim.prune.data.Coordinate;
-import tim.prune.data.DataPoint;
-
-/**
- * Class to represent a possible split point, including
- * the distances to the previous and next points
- */
-public class SplitPoint implements Comparable<SplitPoint>
-{
- private SplitPoint _nextPoint = null;
- private Coordinate _longitude = null;
- private Coordinate _latitude = null;
- private int _pointIndex = 0;
- private double _distToPrevPoint = 0.0;
- private double _distToNextPoint = -1.0;
-
-
- /**
- * Constructor
- * @param inPoint data point
- * @param inIndex point index within track
- */
- public SplitPoint(DataPoint inPoint, int inIndex)
- {
- _longitude = inPoint.getLongitude();
- _latitude = inPoint.getLatitude();
- _pointIndex = inIndex;
- }
-
- /**
- * @param inDist distance to previous track point
- */
- public void setDistanceToPrevPoint(double inDist) {
- _distToPrevPoint = inDist;
- }
- /** @return distance to previous track point */
- public double getDistanceToPrevPoint() {
- return _distToPrevPoint;
- }
-
- /**
- * @param inDist distance to next track point, or -1.0
- */
- public void setDistanceToNextPoint(double inDist) {
- _distToNextPoint = inDist;
- }
- /** @return distance to next track point */
- public double getDistanceToNextPoint() {
- return _distToNextPoint;
- }
- /** @return true if this is closer to the next point than to the previous one */
- public boolean closerToNext() {
- return _distToNextPoint > 0.0 && _distToNextPoint < _distToPrevPoint;
- }
-
- /** @return point index */
- public int getPointIndex() {
- return _pointIndex;
- }
-
- /**
- * @param inOther the next point
- */
- public void setNextPoint(SplitPoint inOther) {
- _nextPoint = inOther;
- }
-
- /** @return the next point, or null */
- public SplitPoint getNextPoint() {
- return _nextPoint;
- }
-
- /**
- * @param inOther other segment end
- * @return true if the coordinates are identical
- */
- public boolean atSamePointAs(SplitPoint inOther)
- {
- return inOther != null && _latitude.equals(inOther._latitude) && _longitude.equals(inOther._longitude);
- }
-
- /**
- * Compare two objects for sorting
- */
- public int compareTo(SplitPoint o)
- {
- if (o == null) return -1;
- // First, sort by latitude
- if (!_latitude.equals(o._latitude)) {
- return (_latitude.getDouble() < o._latitude.getDouble() ? -1 : 1);
- }
- // Latitudes same, so sort by longitude
- if (!_longitude.equals(o._longitude)) {
- return (_longitude.getDouble() < o._longitude.getDouble() ? -1 : 1);
- }
- // Points are identical so just sort by index
- return _pointIndex - o._pointIndex;
- }
-}