Revision 575 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderServices.java

View differences:

DefaultEditingProviderServices.java
306 306
    public Arc createArc(Point start, Point middle, Point end, int subtype)
307 307
        throws BaseException {
308 308

  
309
        Point center = getCenter(start, middle, end, subtype);
310
        double radius = center.distance(start);
311
        double startAngle = getAngle(center, start);
312
        double endAngle = getAngle(center, end);
313
        double middleAngle = getAngle(center, middle);
314
        double extAngle = 0;
309
        Arc arc = (Arc)GeometryLocator.getGeometryManager().create(Geometry.TYPES.ARC, subtype);
310
        arc.setPoints(start, middle, end);
311
        return arc;
315 312

  
316
        if (startAngle < endAngle) {
317
            if ((startAngle < middleAngle) && (middleAngle < endAngle)) {
318
                extAngle = angleDistance(endAngle, startAngle);
319
                return createArc(center, radius, startAngle, extAngle, subtype);
320
            } else {
321
                extAngle = angleDistance(startAngle, endAngle);
322
                return createArc(center, radius, endAngle, extAngle, subtype);
323
            }
324
        } else {
325
            if ((startAngle > middleAngle) && (middleAngle > endAngle)) {
326
                extAngle = angleDistance(startAngle, endAngle);
327
                return createArc(center, radius, endAngle, extAngle, subtype);
328
            } else {
329
                extAngle = angleDistance(endAngle, startAngle);
330
                return createArc(center, radius, startAngle, extAngle, subtype);
331
            }
332
        }
333 313
    }
334 314

  
335 315
    public Point createPoint(double x, double y, int subtype)
......
543 523
    }
544 524

  
545 525
    public double angleDistance(double angle1, double angle2) {
546
        if (angle1 < angle2) {
547
            return angle2 - angle1;
548
        } else {
549
            return ((Math.PI * 2) - angle1) + angle2;
526
        double result = angle2-angle1;
527
        if(result<0){
528
            result = (Math.PI *2)+result;
550 529
        }
530
        return result;
551 531
    }
552 532

  
553 533
    public Line createLine(Point p1, Point p2, int subtype)

Also available in: Unified diff