Index: src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp
===================================================================
--- src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision fe90ab76a0488cae2c9dc4e5dbf47938334d5839)
+++ src/Fragmentation/Exporters/unittests/SphericalPointDistributionUnitTest.cpp	(revision e0e77ea7df927beeb048de63b04f165022e87441)
@@ -748,5 +748,5 @@
     expected += Vector(-1.,0.,0.);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 2);
+        SPD.getRemainingPoints(polygon, 2, 2);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -760,5 +760,5 @@
     expected += Vector(0.,-1.,0.);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 2);
+        SPD.getRemainingPoints(polygon, 2, 2);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -772,5 +772,5 @@
     expected += Vector(0.,0.,1.);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 2);
+        SPD.getRemainingPoints(polygon, 2, 2);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -785,5 +785,5 @@
     expected += RotationAxis.rotateVector(Vector(-1.,0.,0.), 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 2);
+        SPD.getRemainingPoints(polygon, 2, 2);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -805,5 +805,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -823,5 +823,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -838,5 +838,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -861,5 +861,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -880,5 +880,5 @@
     SphericalPointDistribution::Polygon_t expected; // empty cause none are vacant
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -901,5 +901,5 @@
     SphericalPointDistribution::Polygon_t expected; // empty cause none are vacant
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 3);
+        SPD.getRemainingPoints(polygon, 3, 3);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -925,5 +925,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
     //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
         CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -943,5 +943,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -958,5 +958,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -977,5 +977,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1000,5 +1000,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1021,5 +1021,5 @@
     expected.pop_front(); // remove third point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1046,5 +1046,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1073,5 +1073,5 @@
     expected += Vector(-0.5773502691896,-5.551115123126e-17,-0.8164965809277);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 4);
+        SPD.getRemainingPoints(polygon, 4, 4);
 //    std::cout << std::setprecision(13) << "Matched polygon is " << remaining << std::endl;
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
@@ -1090,5 +1090,5 @@
     expected += Vector(-0.3535533905933,-0.3535533905933,-0.8660254037844);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
     std::cout << std::setprecision(13) << "Matched polygon is " << remaining << std::endl;
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
@@ -1108,5 +1108,5 @@
     expected += Vector(0.3535534025157,-0.3535533856548,0.8660254009332);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    std::cout << std::setprecision(13) << "Matched polygon is " << remaining << std::endl;
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
@@ -1125,5 +1125,5 @@
     expected += Vector(0.,0.,-1.);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    std::cout << std::setprecision(13) << "Matched polygon is " << remaining << std::endl;
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
@@ -1146,5 +1146,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1164,5 +1164,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1179,5 +1179,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1202,5 +1202,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180.*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
     // the three remaining points sit on a plane that may be rotated arbitrarily
     // so we cannot simply check for equality between expected and remaining
@@ -1228,5 +1228,5 @@
     expected.pop_front(); // remove third point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1253,5 +1253,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 5);
+        SPD.getRemainingPoints(polygon, 5, 5);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1277,5 +1277,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1295,5 +1295,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1310,5 +1310,5 @@
     expected.pop_front(); // remove second spoint
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1333,5 +1333,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
     // the four remaining points sit on a plane that may have been rotated arbitrarily
     // so we cannot simply check for equality between expected and remaining
@@ -1359,5 +1359,5 @@
     expected.pop_front(); // remove third point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1384,5 +1384,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 6);
+        SPD.getRemainingPoints(polygon, 6, 6);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1408,5 +1408,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1426,5 +1426,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1441,5 +1441,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1464,5 +1464,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
     // the five remaining points sit on a plane that may have been rotated arbitrarily
     // so we cannot simply check for equality between expected and remaining
@@ -1490,5 +1490,5 @@
     expected.pop_front(); // remove third point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1515,5 +1515,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 7);
+        SPD.getRemainingPoints(polygon, 7, 7);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1539,5 +1539,5 @@
     expected.pop_front(); // remove first point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
+        SPD.getRemainingPoints(polygon, 8, 8);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1557,5 +1557,5 @@
     }
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
+        SPD.getRemainingPoints(polygon, 8, 8);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1572,5 +1572,5 @@
     expected.pop_front(); // remove second point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
+        SPD.getRemainingPoints(polygon, 8, 8);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1595,5 +1595,5 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
+        SPD.getRemainingPoints(polygon, 8, 8);
     // the six remaining points sit on two planes that may have been rotated arbitrarily
     // so we cannot simply check for equality between expected and remaining
@@ -1625,5 +1625,5 @@
     expected.pop_front(); // remove third point
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
+        SPD.getRemainingPoints(polygon, 8, 8);
 //    CPPUNIT_ASSERT_EQUAL( expected, remaining );
     CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
@@ -1650,11 +1650,11 @@
       *iter = RotationAxis.rotateVector(*iter, 47.6/180*M_PI);
     SphericalPointDistribution::Polygon_t remaining =
-        SPD.getRemainingPoints(polygon, 8);
-//    CPPUNIT_ASSERT_EQUAL( expected, remaining );
-    CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
-    // also slightly perturbed
-    const double amplitude = 0.05;
-    perturbPolygon(polygon, amplitude);
-    CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, amplitude) );
-  }
-}
+        SPD.getRemainingPoints(polygon, 8, 8);
+//    CPPUNIT_ASSERT_EQUAL( expected, remaining );
+    CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, CenterAccuracy) );
+    // also slightly perturbed
+    const double amplitude = 0.05;
+    perturbPolygon(polygon, amplitude);
+    CPPUNIT_ASSERT( areEqualToWithinBounds(expected, remaining, amplitude) );
+  }
+}
