Ellipsoid { public void contract(final double increment) { dilate(-increment); } Ellipsoid(final Object[] ellipsoid);  Ellipsoid(final double a, final double b, final double c,
		final double cx, final double cy, final double cz,
		final double[][] eigenVectors); boolean contains(final double x, final double y, final double z); void contract(final double increment); Ellipsoid copy(); void dilate(final double da, final double db, final double dc); double[] getAxisAlignedBoundingBox(); double[] getCentre(); double[] getRadii(); double[][] getRotation(); void setRotation(final double[][] rotation); double[] getSortedRadii(); double[][] getSurfacePoints(final int nPoints); double[][] getSurfacePoints(final double[][] vectors); double getVolume(); double[] getYMinAndMax(); double[] getZMinAndMax(); void rotate(final double[][] rotation); void setCentroid(final double x, final double y, final double z); static double[][] transpose(final double[][] a); public int id; }
@Test public void testContract() { unitSphere.contract(0.015); final double[][] points = unitSphere.getSurfacePoints(10000); for (final double[] p : points) { assertEquals(0.985, Trig.distance3D(p), 1E-9); } }