Revision 45242 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/Arc2D.java

View differences:

Arc2D.java
69 69
     */
70 70
    public void setPoints(Point center, double radius, double startAngle, double angleExt) {
71 71

  
72
        double diameter = radius*2;
73
        double x;
74
        double y;
75
        double start;
76
        double extent;
77
        double angleOffset;
78
        final double pi2 = Math.PI*2;
79

  
80
        angleOffset = 0;
81
        if( angleExt<0 ) {
82
            angleOffset = pi2 + angleExt;
83
            angleExt = Math.abs(angleExt);
84
        }
85
        x = center.getX() - radius;
86
        y = center.getY() - radius;
87

  
88
        if( angleExt > 0 && (angleExt % pi2) == 0  ) {
89
            start = 0;
90
            extent = 360;
91
        } else {
92
            angleExt = angleExt % pi2; //Asumimos que aqui angleExt es siempre positivo
93
            startAngle = Math.abs(startAngle) % pi2;
94
            start = Math.toDegrees( pi2 - startAngle + angleOffset) ;
95
            extent = - Math.toDegrees(pi2 - angleExt);
96
        }
97

  
98

  
99
        double angleStart = Math.toRadians(-start);
100
        double initX = x + (Math.cos(angleStart) * 0.5 + 0.5) * diameter;
101
        double initY = y + (Math.sin(angleStart) * 0.5 + 0.5) * diameter;
102
        init = new Point2D(initX, initY);
103

  
104
        double angleEnd = Math.toRadians(-start - extent);
105
        double endX = x + (Math.cos(angleEnd) * 0.5 + 0.5) * diameter;
106
        double endY = y + (Math.sin(angleEnd) * 0.5 + 0.5) * diameter;
107
        end =  new Point2D(endX, endY);
108

  
109
        double angleMiddle = Math.toRadians(-start - extent)/2;
110
        double middleX = x + (Math.cos(angleMiddle) * 0.5 + 0.5) * diameter;
111
        double middleY = y + (Math.sin(angleMiddle) * 0.5 + 0.5) * diameter;
112
        middle =  new Point2D(middleX, middleY);
72
        init = new Point2D(
73
                center.getX()+radius*Math.cos(startAngle),
74
                center.getY()+radius*Math.sin(startAngle)
75
                );
76
        
77
        double midAngle = startAngle+angleExt/2;
78
        middle = new Point2D(
79
                center.getX()+radius*Math.cos(midAngle),
80
                center.getY()+radius*Math.sin(midAngle)
81
                );
82
        
83
        end = new Point2D(
84
                center.getX()+radius*Math.cos(startAngle+angleExt),
85
                center.getY()+radius*Math.sin(startAngle+angleExt)
86
                );
87
        
88
        
113 89
}
114 90

  
115 91
    /* (non-Javadoc)

Also available in: Unified diff