Пример #1
0
 public Point2D getFrontierIntersection(Shape shape, Rectangle2D... notIn) {
   final List<CubicCurve2D.Double> all = new ArrayList<CubicCurve2D.Double>(beziers);
   for (int i = 0; i < 8; i++) {
     for (CubicCurve2D.Double immutable : all) {
       if (contains(immutable, notIn)) {
         continue;
       }
       final CubicCurve2D.Double bez = new CubicCurve2D.Double();
       bez.setCurve(immutable);
       if (BezierUtils.isCutting(bez, shape)) {
         while (BezierUtils.dist(bez) > 1.0) {
           BezierUtils.shorten(bez, shape);
         }
         final Point2D.Double result =
             new Point2D.Double((bez.x1 + bez.x2) / 2, (bez.y1 + bez.y2) / 2);
         if (contains(result, notIn) == false) {
           return result;
         }
       }
     }
     cutAllCubic(all);
   }
   throw new IllegalArgumentException("shape=" + shape);
 }