You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2011/09/14 18:53:04 UTC

svn commit: r1170709 - in /labs/magma/trunk/beans-map: pom.xml src/main/java/org/apache/magma/beans/MapCoordinate.java src/main/java/org/apache/magma/beans/MapShape.java

Author: simoneg
Date: Wed Sep 14 16:53:04 2011
New Revision: 1170709

URL: http://svn.apache.org/viewvc?rev=1170709&view=rev
Log:
Added some basic shape geometry calcs

Modified:
    labs/magma/trunk/beans-map/pom.xml
    labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapCoordinate.java
    labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapShape.java

Modified: labs/magma/trunk/beans-map/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/beans-map/pom.xml?rev=1170709&r1=1170708&r2=1170709&view=diff
==============================================================================
--- labs/magma/trunk/beans-map/pom.xml (original)
+++ labs/magma/trunk/beans-map/pom.xml Wed Sep 14 16:53:04 2011
@@ -21,5 +21,10 @@
       <artifactId>foundation-validation</artifactId>
       <version>0.0.3-SNAPSHOT</version>
     </dependency>
+    <dependency>
+    	<groupId>junit</groupId>
+    	<artifactId>junit</artifactId>
+    	<version>4.9</version>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Modified: labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapCoordinate.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapCoordinate.java?rev=1170709&r1=1170708&r2=1170709&view=diff
==============================================================================
--- labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapCoordinate.java (original)
+++ labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapCoordinate.java Wed Sep 14 16:53:04 2011
@@ -27,4 +27,16 @@ public class MapCoordinate {
 		return Float.toString(this.latitude) + "," + Float.toString(this.longitude);
 	}
 	
+	public double getRadLongitude() {
+		return toRad(getLongitude());		
+	}
+	
+	public double getRadLatitude() {
+		return toRad(getLatitude());
+	}
+	
+	private double toRad(float degrees) {
+		return degrees * Math.PI / 180d;
+	}
+	
 }

Modified: labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapShape.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapShape.java?rev=1170709&r1=1170708&r2=1170709&view=diff
==============================================================================
--- labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapShape.java (original)
+++ labs/magma/trunk/beans-map/src/main/java/org/apache/magma/beans/MapShape.java Wed Sep 14 16:53:04 2011
@@ -13,6 +13,7 @@ public class MapShape {
 	
 	private String type;
 	private List<MapCoordinate> coordinates = new ArrayList<MapCoordinate>();
+	private List<MapSegment> segments = null;
 	private String extra;
 
 	public String getType() {
@@ -41,6 +42,7 @@ public class MapShape {
 		this.extra = extra;
 	}
 	public void parse(String shapestr) {
+		this.segments = null;
 		this.coordinates.clear();
 		String[] parts = shapestr.split("\\!");
 		this.type = parts[0];
@@ -78,7 +80,46 @@ public class MapShape {
 		return ret.toString();
 	}
 	
+
+	public synchronized List<MapSegment> getSegments() {
+		if (segments != null) return segments;
+
+		segments = new ArrayList<MapSegment>();
+		MapCoordinate pre = null;
+		for (MapCoordinate coord : getCoordinates()) {
+			if (pre != null) {
+				MapSegment seg = new MapSegment(pre, coord);
+				segments.add(seg);
+			}
+			pre = coord;
+		}
+		
+		return segments;
+	}
 	
+	public MapCoordinate findPointAt(double meters) {
+		List<MapSegment> segs = getSegments();
+		
+		for (MapSegment seg : segs) {
+			double dist = seg.getDistance();
+			if (meters > dist) {
+				meters -= dist;
+			} else {
+				return seg.findPointAt(meters);
+			}
+		}
+		
+		return null;
+	}
 	
+	public double getDistance() {
+		double ret = 0;
+		List<MapSegment> segs = getSegments();
+		for (MapSegment seg : segs) {
+			double dist = seg.getDistance();
+			ret += dist;
+		}		
+		return ret;
+	}
 	
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org