code: public static Point2D[] calculateGisModelBulge(Point2D[] newPts, double[] bulges) {
  		Vector ptspol = new Vector();
  		Point2D init = new Point2D.Double();
  		Point2D end = new Point2D.Double();
  		for (int j=0; j<newPts.length; j++) {
  			init = newPts[j];
  			if (j!=newPts.length-1) end = newPts[j+1];
  			if (bulges[j]==0 || j==newPts.length-1 || (init.getX()==end.getX() && init.getY()==end.getY())) {
  				ptspol.add(init);
  			} else {
  				ArcFromBulgeCalculator arcCalculator = new ArcFromBulgeCalculator(init, end, bulges[j]);
  				Vector arc = arcCalculator.getPoints(1);
  				if (bulges[j]<0) {
  					for (int k=arc.size()-1; k>=0; k--) {
  						ptspol.add(arc.get(k));
  					}
  					ptspol.remove(ptspol.size()-1);
  				} else {
  					for (int k=0;k<arc.size();k++) {
  						ptspol.add(arc.get(k));
  					}
  					ptspol.remove(ptspol.size()-1);
  				}
  			}
  		}
  		Point2D[] points = new Point2D[ptspol.size()];
  		for (int j=0;j<ptspol.size();j++) {
  			points[j] = (Point2D)ptspol.get(j);
  		}
  		return points;
  	}
docs: This method applies an array of bulges to an array of Point2D that defines a
  polyline. The result is a polyline with the input points with the addition of the
  points that define the new arcs added to the polyline
  
  @param newPts Base points of the polyline
  @param bulges Array of bulge parameters
  @return Polyline with a new set of arcs added and defined by the bulge parameters