Revision 42441 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/primitive/curve/arc/AbstractArc.java

View differences:

AbstractArc.java
439 439
        return angle;
440 440
    }
441 441

  
442

  
443
    /* (non-Javadoc)
444
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
445
     */
446
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
447
        // TODO Auto-generated method stub
448
        Point center = getCenterPoint();
449
        double radius = center.distance(init);
450
        double scale = (radius+distance)/radius;
451
        AffineTransform at = getScaleAffineTransform(center, scale);
452
        Geometry cloned = this.cloneGeometry();
453
        cloned.transform(at);
454
        return cloned;
455
    }
456

  
457
    protected AffineTransform getScaleAffineTransform(Point center, Double scale)
458
        throws GeometryOperationNotSupportedException,
459
        GeometryOperationException {
460

  
461
        AffineTransform translate =
462
            AffineTransform
463
                .getTranslateInstance(-center.getX(), -center.getY());
464

  
465
        AffineTransform scaleTransform = AffineTransform.getScaleInstance(scale,scale);
466

  
467
        AffineTransform inverseTranslate =
468
            AffineTransform.getTranslateInstance(center.getX(), center.getY());
469
        AffineTransform at = new AffineTransform(translate);
470

  
471
        at.preConcatenate(scaleTransform);
472
        at.preConcatenate(inverseTranslate);
473
        return at;
474
    }
442 475
}

Also available in: Unified diff