private void checkDisk(List<Vector2D> points, List<Vector2D> refSupport) {
EnclosingBall<Euclidean2D, Vector2D> disk = checkDisk(points);
// compare computed disk with expected disk
DiskGenerator generator = new DiskGenerator();
EnclosingBall<Euclidean2D, Vector2D> expected = generator.ballOnSupport(refSupport);
Assert.assertEquals(refSupport.size(), disk.getSupportSize());
Assert.assertEquals(expected.getRadius(), disk.getRadius(), 1.0e-10);
Assert.assertEquals(expected.getCenter().getX(), disk.getCenter().getX(), 1.0e-10);
Assert.assertEquals(expected.getCenter().getY(), disk.getCenter().getY(), 1.0e-10);
for (Vector2D s : disk.getSupport()) {
boolean found = false;
for (Vector2D rs : refSupport) {
if (s == rs) {
found = true;
}
}
Assert.assertTrue(found);
}
// check removing any point of the support disk fails to enclose the point
for (int i = 0; i < disk.getSupportSize(); ++i) {
List<Vector2D> reducedSupport = new ArrayList<Vector2D>();
int count = 0;
for (Vector2D s : disk.getSupport()) {
if (count++ != i) {
reducedSupport.add(s);
}
}
EnclosingBall<Euclidean2D, Vector2D> reducedDisk = generator.ballOnSupport(reducedSupport);
boolean foundOutside = false;
for (int j = 0; j < points.size() && !foundOutside; ++j) {
if (!reducedDisk.contains(points.get(j), 1.0e-10)) {
foundOutside = true;
}