]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/LatLonRectangle.java
Version 6, October 2008
[GpsPrune.git] / tim / prune / data / LatLonRectangle.java
diff --git a/tim/prune/data/LatLonRectangle.java b/tim/prune/data/LatLonRectangle.java
new file mode 100644 (file)
index 0000000..74c9855
--- /dev/null
@@ -0,0 +1,50 @@
+package tim.prune.data;
+
+/**
+ * Class to hold a rectangle of latitude/longitude
+ * with minimum and maximum values for each
+ */
+public class LatLonRectangle
+{
+       private DoubleRange _latRange = null;
+       private DoubleRange _lonRange = null;
+
+
+       /**
+        * Constructor
+        * @param inLatRange latitude range
+        * @param inLonRange longitude range
+        */
+       public LatLonRectangle(DoubleRange inLatRange, DoubleRange inLonRange)
+       {
+               _latRange = inLatRange;
+               _lonRange = inLonRange;
+               // TODO: Expand range by certain percentage
+       }
+
+       /**
+        * @return true if the range is empty
+        */
+       public boolean isEmpty()
+       {
+               return _latRange == null || _lonRange == null
+                       || !_latRange.hasData() || !_lonRange.hasData();
+       }
+
+       /**
+        * Check if a point is within the rectangle
+        * @param inPoint point to check
+        * @return true if point within rectangle
+        */
+       public boolean containsPoint(DataPoint inPoint)
+       {
+               if (inPoint != null && !isEmpty())
+               {
+                       double pointLat = inPoint.getLatitude().getDouble();
+                       double pointLon = inPoint.getLongitude().getDouble();
+                       return (pointLat >= _latRange.getMinimum() && pointLat <= _latRange.getMaximum()
+                               && pointLon >= _lonRange.getMinimum() && pointLon <= _lonRange.getMaximum());
+               }
+               return false;
+       }
+}