Revision 41763 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.generalpath/src/main/java/org/gvsig/fmap/geom/generalpath/primitive/curve/arc/Arc2D.java

View differences:

Arc2D.java
525 525
     */
526 526
    public void setPointsStartExt(Point center, double radius,
527 527
        double startAngle, double angleExt) {
528
        
529 528
        setPoints(center, radius, startAngle, angleExt);
530 529
    }
531 530

  
......
602 601
	 */
603 602
	private void setPoints(Point2D center, double radius, double initAngle,
604 603
			double angleExt) {
605
		java.awt.geom.Arc2D arco = UtilFunctions.createArc(center, radius, initAngle, angleExt);
604
            
605
            double x;
606
            double y;
607
            double w;
608
            double h;
609
            double start;
610
            double extent;
611
            double angleOffset;
612
            final double pi2 = Math.PI*2;
613
            
614
            angleOffset = 0;
615
            if( angleExt<0 ) {
616
                angleOffset = pi2 + angleExt;
617
                angleExt = Math.abs(angleExt);
618
            }            
619
            x = center.getX() - radius;
620
            y = center.getY() - radius;
621
            w = radius * 2;
622
            h = w; // Son siempre arcos de circunferencia
623
            
624
            if( angleExt > 0 && (angleExt % pi2) == 0  ) {
625
                start = 0;
626
                extent = 360;
627
            } else {
628
                angleExt = angleExt % pi2; //Asumimos que aqui angleExt es siempre positivo
629
                initAngle = Math.abs(initAngle) % pi2;
630
                start = Math.toDegrees( pi2 - initAngle + angleOffset) ;
631
                extent = - Math.toDegrees(pi2 - angleExt);
632
            }
633
            java.awt.geom.Arc2D.Double arco = new java.awt.geom.Arc2D.Double(
634
                    x,y,w,h,start,extent,java.awt.geom.Arc2D.OPEN);
635
            
636
            this.gp = new GeneralPathX(	arco.getPathIterator(null,geomManager.getFlatness()));
606 637

  
607
		java.awt.geom.Arc2D semiarco = UtilFunctions.createArc(center, radius, initAngle, angleExt/2);
608
		if (arco == null || semiarco == null) {
609
		    logger.info("Did not set arc points (probably aligned points)");
610
			return;
611
		}
638
            this.init = arco.getStartPoint();
639
            this.end = arco.getEndPoint();
612 640

  
613
		Point2D p1 = arco.getStartPoint();
614
		Point2D p2 = semiarco.getEndPoint();
615
		Point2D p3 = arco.getEndPoint();
616

  
617
		setPoints(p1, p2, p3);		
641
            java.awt.geom.Arc2D.Double semiarco = new java.awt.geom.Arc2D.Double(
642
                    x,y,w,h,start,extent/2,java.awt.geom.Arc2D.OPEN);
643
            this.middle = semiarco.getEndPoint();
618 644
	}
619 645
	
620 646

  

Also available in: Unified diff