private static void addQuarterArc(Path2D.Float path,float x1,float y1,float x2,float y2,float curvature,boolean verticalStart){
  boolean down=y1 < y2;
  boolean left=x1 > x2;
  float cx1=0;
  float cy1=0;
  float cx2=0;
  float cy2=0;
  if (verticalStart) {
    cx1=x1;
    cy2=y2;
    if (left) {
      cx2=x1 - curvature;
    }
 else {
      cx2=x1 + curvature;
    }
    if (down) {
      cy1=y2 - curvature;
    }
 else {
      cy1=y2 + curvature;
    }
  }
 else {
    cx2=x2;
    cy1=y1;
    if (left) {
      cx1=x2 + curvature;
    }
 else {
      cx1=x2 - curvature;
    }
    if (down) {
      cy2=y1 + curvature;
    }
 else {
      cy2=y1 - curvature;
    }
  }
  path.curveTo(cx1,cy1,cx2,cy2,x2,y2);
}

private static void addQuarterArc ( Path2D . Float path , float x1 , float y1 , float x2 , float y2 , float curvature , boolean verticalStart ) { boolean down = y1 < y2 ; boolean left = x1 > x2 ; float cx1 = 0 ; float cy1 = 0 ; float cx2 = 0 ; float cy2 = 0 ; if ( verticalStart ) { cx1 = x1 ; cy2 = y2 ; if ( left ) { cx2 = x1 - curvature ; } else { cx2 = x1 + curvature ; } if ( down ) { cy1 = y2 - curvature ; } else { cy1 = y2 + curvature ; } } else { cx2 = x2 ; cy1 = y1 ; if ( left ) { cx1 = x2 + curvature ; } else { cx1 = x2 - curvature ; } if ( down ) { cy2 = y1 + curvature ; } else { cy2 = y1 - curvature ; } } path . curveTo ( cx1 , cy1 , cx2 , cy2 , x2 , y2 ) ; }
add a quarter circular path to a given path object , starting from ( x1 , y1 ) to ( x2 , y2 ) .
