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/14 09:55:41 UTC

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

Author: luc
Date: Tue Jan 14 08:55:40 2014
New Revision: 1557981

URL: http://svn.apache.org/r1557981
Log:
Don't advertise an assumption we may remove soon.

We will probably extend the circle class to also represent small circles
on the 2-sphere, not only great circles. This would introduce an
aperture angle that could be different from \pi/2. In this case, the
part of a circle inside another circle may exist or not (small circles
can be disjoint), and may have a length either shorter or longer than
\pi.

This change is not done yet, but could happen any time soon, even before
3.3 is out.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/Circle.java
    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/CircleTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/Circle.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/Circle.java?rev=1557981&r1=1557980&r2=1557981&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/Circle.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/geometry/spherical/twod/Circle.java Tue Jan 14 08:55:40 2014
@@ -112,9 +112,9 @@ public class Circle implements Hyperplan
      * @param newPole circle pole
      */
     public void reset(final Vector3D newPole) {
-        this.pole   = newPole.normalize();
-        this.x      = newPole.orthogonal();
-        this.y      = Vector3D.crossProduct(newPole, x).normalize();
+        this.pole = newPole.normalize();
+        this.x    = newPole.orthogonal();
+        this.y    = Vector3D.crossProduct(newPole, x).normalize();
     }
 
     /** Revert the instance.
@@ -226,7 +226,6 @@ public class Circle implements Hyperplan
     /** Get the arc of the instance that lies inside the other circle.
      * @param other other circle
      * @return arc of the instance that lies inside the other circle
-     * (guaranteed to always have a length of \( \pi \))
      */
     public Arc getInsideArc(final Circle other) {
         final double alpha  = getPhase(other.pole);

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=1557981&r1=1557980&r2=1557981&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 Tue Jan 14 08:55:40 2014
@@ -476,10 +476,10 @@ public class SphericalPolygonsSet extend
 
             // get the inside arc, synchronizing its phase with the edge itself
             final double edgeStart        = circle.getPhase(start.getLocation().getVector());
-            final double arcRelativeStart = MathUtils.normalizeAngle(circle.getInsideArc(splitCircle).getInf(),
-                                                                     edgeStart + FastMath.PI) - edgeStart;
-            final double arcRelativeEnd   = arcRelativeStart + FastMath.PI;
-            final double unwrappedEnd     = arcRelativeStart - FastMath.PI;
+            final Arc    arc              = circle.getInsideArc(splitCircle);
+            final double arcRelativeStart = MathUtils.normalizeAngle(arc.getInf(), edgeStart + FastMath.PI) - edgeStart;
+            final double arcRelativeEnd   = arcRelativeStart + arc.getSize();
+            final double unwrappedEnd     = arcRelativeEnd - MathUtils.TWO_PI;
 
             // build the sub-edges
             final double tolerance = circle.getTolerance();

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/CircleTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/CircleTest.java?rev=1557981&r1=1557980&r2=1557981&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/CircleTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/geometry/spherical/twod/CircleTest.java Tue Jan 14 08:55:40 2014
@@ -143,6 +143,7 @@ public class CircleTest {
 
     private void checkArcIsInside(final Circle arcCircle, final Circle otherCircle) {
         Arc arc = arcCircle.getInsideArc(otherCircle);
+        Assert.assertEquals(FastMath.PI, arc.getSize(), 1.0e-10);
         for (double alpha = arc.getInf(); alpha < arc.getSup(); alpha += 0.1) {
             Assert.assertTrue(otherCircle.getOffset(arcCircle.getPointAt(alpha)) <= 2.0e-15);
         }