private Intersection[] cubicCubicIntersect(CubicSegment curve1, CubicSegment curve2)
Intersection[] cubicCubicIntersect(CubicSegment curve1, CubicSegment curve2)
  private Intersection[] cubicCubicIntersect(CubicSegment curve1,                                             CubicSegment curve2)  {    Rectangle2D r1 = curve1.getBounds();    Rectangle2D r2 = curve2.getBounds();    if (! r1.intersects(r2))      return null;    cc_intersections = new Vector();    recursiveSubdivide(curve1.getCubicCurve2D(), curve2.getCubicCurve2D(),                       getRecursionDepth(curve1), getRecursionDepth(curve2),                       0.0, 0.0, 1.0, 1.0);    if (cc_intersections.size() == 0)      return null;    Intersection[] results = new Intersection[cc_intersections.size()];    for (int i = 0; i < cc_intersections.size(); i++)      {	double[] temp = (double[]) cc_intersections.elementAt(i);	results[i] = new Intersection(curve1.evaluatePoint(temp[0]), temp[0],	                              temp[1]);      }    cc_intersections = null;    return (results);  }