Ejemplo n.º 1
0
 public PointDirected getIntersection(CubicCurve2D.Double bez) {
   if (contains(bez.x1, bez.y1) == contains(bez.x2, bez.y2)) {
     return null;
   }
   final double dist = bez.getP1().distance(bez.getP2());
   if (dist < 2) {
     final double angle = BezierUtils.getStartingAngle(bez);
     return new PointDirected(bez.getP1(), angle);
   }
   final CubicCurve2D.Double left = new CubicCurve2D.Double();
   final CubicCurve2D.Double right = new CubicCurve2D.Double();
   bez.subdivide(left, right);
   final PointDirected int1 = getIntersection(left);
   if (int1 != null) {
     return int1;
   }
   final PointDirected int2 = getIntersection(right);
   if (int2 != null) {
     return int2;
   }
   throw new IllegalStateException();
 }