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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to