private Geometry readArcObject() throws IOException {
try {
final Coordinate c1 = readMIFCoordinate();
final Coordinate c2 = readMIFCoordinate();
final double a = Double.parseDouble(mif_.getToken(' ', true));
final double b = Double.parseDouble(mif_.getToken());
final Arc2D.Double ellipse = new Arc2D.Double(Math.max(c1.x, c2.x), Math.max(c1.y, c2.y),
Math.abs(c2.x - c1.x), Math.abs(c2.y - c1.y), a, b, Arc2D.OPEN);
final double ecart = Math.min(ellipse.height, ellipse.width) / 20;
final PathIterator it = ellipse.getPathIterator(null, ecart);
final double[] coord = new double[2];
final List coor = new ArrayList(20);
while (!it.isDone()) {
it.currentSegment(coord);
coor.add(new Coordinate(coord[0], coord[1]));
}
return geomFactory_.createLinearRing((Coordinate[]) coor.toArray(new Coordinate[coor.size()]));
} catch (final Exception e) {
throw createExc(e);
}
}