You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2014/01/12 12:13:05 UTC

svn commit: r1557514 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java

Author: luc
Date: Sun Jan 12 11:13:05 2014
New Revision: 1557514

URL: http://svn.apache.org/r1557514
Log:
Fixed missing last iteration in a loop.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java?rev=1557514&r1=1557513&r2=1557514&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.java Sun Jan 12 11:13:05 2014
@@ -628,7 +628,7 @@ public class SphericalPolygonsSet extend
                 double sum = 0;
                 Vector3D sumP = Vector3D.ZERO;
                 for (Edge edge = startVertex.getOutgoing();
-                     edge.getEnd() != startVertex;
+                     n == 0 || edge.getStart() != startVertex;
                      edge = edge.getEnd().getOutgoing()) {
                     final Vector3D middle = edge.getPointAt(0.5 * edge.getLength());
                     sumP = new Vector3D(1, sumP, edge.getLength(), middle);

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java?rev=1557514&r1=1557513&r2=1557514&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSetTest.java Sun Jan 12 11:13:05 2014
@@ -16,9 +16,12 @@
  */
 package org.apache.commons.math3.geometry.spherical.twod;
 
+import java.util.List;
+
 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
 import org.apache.commons.math3.geometry.partitioning.Region.Location;
 import org.apache.commons.math3.geometry.partitioning.RegionFactory;
+import org.apache.commons.math3.geometry.spherical.twod.SphericalPolygonsSet.Vertex;
 import org.apache.commons.math3.random.UnitSphereRandomVectorGenerator;
 import org.apache.commons.math3.random.Well1024a;
 import org.apache.commons.math3.util.FastMath;
@@ -81,6 +84,35 @@ public class SphericalPolygonsSetTest {
                 Assert.assertEquals(Location.BOUNDARY, octant.checkPoint(new S2Point(v)));
             }
         }
+
+        List<SphericalPolygonsSet.Vertex> loops = octant.getBoundaryLoops();
+        Assert.assertEquals(1, loops.size());
+        boolean xFound = false;
+        boolean yFound = false;
+        boolean zFound = false;
+        Vertex first = loops.get(0);
+        xFound = first.getLocation().getVector().distance(Vector3D.PLUS_I) < 1.0e-10;
+        yFound = first.getLocation().getVector().distance(Vector3D.PLUS_J) < 1.0e-10;
+        zFound = first.getLocation().getVector().distance(Vector3D.PLUS_K) < 1.0e-10;
+        int count = 1;
+        for (Vertex v = first.getOutgoing().getEnd(); v != first; v = v.getOutgoing().getEnd()) {
+            ++count;
+            Assert.assertTrue(v == v.getIncoming().getStart().getOutgoing().getEnd());
+            Assert.assertEquals(0.5 * FastMath.PI, v.getIncoming().getLength(), 1.0e-10);
+            xFound = xFound || v.getLocation().getVector().distance(Vector3D.PLUS_I) < 1.0e-10;
+            yFound = yFound || v.getLocation().getVector().distance(Vector3D.PLUS_J) < 1.0e-10;
+            zFound = zFound || v.getLocation().getVector().distance(Vector3D.PLUS_K) < 1.0e-10;
+        }
+        Assert.assertTrue(xFound);
+        Assert.assertTrue(yFound);
+        Assert.assertTrue(zFound);
+        Assert.assertEquals(3, count);
+
+        Assert.assertEquals(0.0,
+                            new Vector3D(1, 1, 1).normalize().distance(((S2Point) octant.getBarycenter()).getVector()),
+                            1.0e-10);
+        Assert.assertEquals(0.5 * FastMath.PI, octant.getSize(), 1.0e-10);
+
     }
 
     @Test