Class IntersectionIdentifier

  • Direct Known Subclasses:
    BinarySearchIntersectionIdentifier


    public abstract class IntersectionIdentifier
    extends Object
    This identifies intersections of parametric path segments. The intersections should be sorted by ascending t1-values.

    It is assumed that we're only interested with t=[0,1] for both segments, so intersections outside of this range are ignored. TODO: This uses the BinarySearchIntersectionIdentifier, which contains a warning.

    • Method Summary

      Modifier and Type Method and Description
      abstract int cubicCubic(double ax1, double bx1, double cx1, double dx1, double ay1, double by1, double cy1, double dy1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two cubic curves, expressed as parametric equations.
      int cubicCubicBezier(double x0a, double y0a, double cx0a, double cy0a, double cx1a, double cy1a, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two cubic curves, expressed as bezier control points.
      static IntersectionIdentifier get()
       
      void getIntersections(Shape shape1, AffineTransform transform1, Shape shape2, AffineTransform transform2, IntersectionIdentifier.IntersectionListener listener)
       
      void getIntersections(Shape shape1, Shape shape2, IntersectionIdentifier.IntersectionListener listener)
       
      abstract int lineCubic(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a line and a cubic curve, expressed as parametric equations.
      int lineCubicBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a line and a cubic curve, expressed as bezier control points.
      int lineLine(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double ay2, double by2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two lines, expressed as parametric equations.
      int lineLineBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two lines, expressed as bezier control points.
      abstract int lineQuadratic(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double cx2, double ay2, double by2, double cy2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a line and a parabola, expressed as parametric equations.
      int lineQuadraticBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double cxb, double cyb, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a line and a parabola, expressed as bezier control points.
      abstract int quadraticCubic(double ax1, double bx1, double cx1, double ay1, double by1, double cy1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a parabola and a cubic curve, expressed as parametric equations.
      int quadraticCubicBezier(double x0a, double y0a, double cxa, double cya, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of a parabola and a cubic curve, expressed as bezier control points.
      abstract int quadraticQuadratic(double ax1, double bx1, double cx1, double ay1, double by1, double cy1, double ax2, double bx2, double cx2, double ay2, double by2, double cy2, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two parabolas, expressed as parametric equations.
      int quadraticQuadraticBezier(double x0a, double y0a, double cxa, double cya, double x1a, double y1a, double x0b, double y0b, double cxb, double cyb, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier.Return returnType)
      Identify the intersection(s) of two parabolas, expressed as bezier control points.
      static void set(IntersectionIdentifier i)
       
    • Constructor Detail

      • IntersectionIdentifier

        public IntersectionIdentifier()
    • Method Detail

      • lineLine

        public int lineLine(double ax1,
                            double bx1,
                            double ay1,
                            double by1,
                            double ax2,
                            double bx2,
                            double ay2,
                            double by2,
                            double[] dest,
                            int offset,
                            IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two lines, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2+bx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2+bx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2+by2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2+by2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • lineLineBezier

        public int lineLineBezier(double x0a,
                                  double y0a,
                                  double x1a,
                                  double y1a,
                                  double x0b,
                                  double y0b,
                                  double x1b,
                                  double y1b,
                                  double[] dest,
                                  int offset,
                                  IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two lines, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the first line
        y0a - the y-coordinate of the first end point of the first line
        x1a - the x-coordinate of the second end point of the first line
        y1a - the y-coordinate of the second end point of the first line
        x0b - the x-coordinate of the first end point of the second line
        y0b - the y-coordinate of the first end point of the second line
        x1b - the x-coordinate of the second end point of the second line
        y1b - the y-coordinate of the second end point of the second line
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • lineQuadratic

        public abstract int lineQuadratic(double ax1,
                                          double bx1,
                                          double ay1,
                                          double by1,
                                          double ax2,
                                          double bx2,
                                          double cx2,
                                          double ay2,
                                          double by2,
                                          double cy2,
                                          double[] dest,
                                          int offset,
                                          IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a line and a parabola, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        cy2 - the coefficient "cy2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • lineQuadraticBezier

        public int lineQuadraticBezier(double x0a,
                                       double y0a,
                                       double x1a,
                                       double y1a,
                                       double x0b,
                                       double y0b,
                                       double cxb,
                                       double cyb,
                                       double x1b,
                                       double y1b,
                                       double[] dest,
                                       int offset,
                                       IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a line and a parabola, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the line
        y0a - the y-coordinate of the first end point of the line
        x1a - the x-coordinate of the second end point of the line
        y1a - the y-coordinate of the second end point of the line
        x0b - the x-coordinate of the first end point of the quadratic curve
        y0b - the y-coordinate of the first end point of the quadratic curve
        cxb - the x-coordinate of the control point of the quadratic curve
        cyb - the y-coordinate of the control point of the quadratic curve
        x1b - the x-coordinate of the second end point of the quadratic curve
        y1b - the y-coordinate of the second end point of the quadratic curve
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • lineCubic

        public abstract int lineCubic(double ax1,
                                      double bx1,
                                      double ay1,
                                      double by1,
                                      double ax2,
                                      double bx2,
                                      double cx2,
                                      double dx2,
                                      double ay2,
                                      double by2,
                                      double cy2,
                                      double dy2,
                                      double[] dest,
                                      int offset,
                                      IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a line and a cubic curve, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • lineCubicBezier

        public int lineCubicBezier(double x0a,
                                   double y0a,
                                   double x1a,
                                   double y1a,
                                   double x0b,
                                   double y0b,
                                   double cx0b,
                                   double cy0b,
                                   double cx1b,
                                   double cy1b,
                                   double x1b,
                                   double y1b,
                                   double[] dest,
                                   int offset,
                                   IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a line and a cubic curve, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the line
        y0a - the y-coordinate of the first end point of the line
        x1a - the x-coordinate of the second end point of the line
        y1a - the y-coordinate of the second end point of the line
        x0b - the x-coordinate of the first end point of the cubic curve
        y0b - the y-coordinate of the first end point of the cubic curve
        cx0b - the x-coordinate of the first control point of the cubic curve
        cy0b - the y-coordinate of the first control point of the cubic curve
        cx1b - the x-coordinate of the second control point of the cubic curve
        cy1b - the y-coordinate of the second control point of the cubic curve
        x1b - the x-coordinate of the second end point of the cubic curve
        y1b - the y-coordinate of the second end point of the cubic curve
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • quadraticQuadratic

        public abstract int quadraticQuadratic(double ax1,
                                               double bx1,
                                               double cx1,
                                               double ay1,
                                               double by1,
                                               double cy1,
                                               double ax2,
                                               double bx2,
                                               double cx2,
                                               double ay2,
                                               double by2,
                                               double cy2,
                                               double[] dest,
                                               int offset,
                                               IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two parabolas, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        cy2 - the coefficient "cy2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • quadraticQuadraticBezier

        public int quadraticQuadraticBezier(double x0a,
                                            double y0a,
                                            double cxa,
                                            double cya,
                                            double x1a,
                                            double y1a,
                                            double x0b,
                                            double y0b,
                                            double cxb,
                                            double cyb,
                                            double x1b,
                                            double y1b,
                                            double[] dest,
                                            int offset,
                                            IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two parabolas, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the first quadratic curve
        y0a - the y-coordinate of the first end point of the first quadratic curve
        cxa - the x-coordinate of the control point of the first quadratic curve
        cya - the y-coordinate of the control point of the first quadratic curve
        x1a - the x-coordinate of the second end point of the first quadratic curve
        y1a - the y-coordinate of the second end point of the first quadratic curve
        x0b - the x-coordinate of the first end point of the second quadratic curve
        y0b - the y-coordinate of the first end point of the second quadratic curve
        cxb - the x-coordinate of the control point of the second quadratic curve
        cyb - the y-coordinate of the control point of the second quadratic curve
        x1b - the x-coordinate of the second end point of the second quadratic curve
        y1b - the y-coordinate of the second end point of the second quadratic curve
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • quadraticCubic

        public abstract int quadraticCubic(double ax1,
                                           double bx1,
                                           double cx1,
                                           double ay1,
                                           double by1,
                                           double cy1,
                                           double ax2,
                                           double bx2,
                                           double cx2,
                                           double dx2,
                                           double ay2,
                                           double by2,
                                           double cy2,
                                           double dy2,
                                           double[] dest,
                                           int offset,
                                           IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a parabola and a cubic curve, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • quadraticCubicBezier

        public int quadraticCubicBezier(double x0a,
                                        double y0a,
                                        double cxa,
                                        double cya,
                                        double x1a,
                                        double y1a,
                                        double x0b,
                                        double y0b,
                                        double cx0b,
                                        double cy0b,
                                        double cx1b,
                                        double cy1b,
                                        double x1b,
                                        double y1b,
                                        double[] dest,
                                        int offset,
                                        IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of a parabola and a cubic curve, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the quadratic curve
        y0a - the y-coordinate of the first end point of the quadratic curve
        cxa - the x-coordinate of the control point of the quadratic curve
        cya - the y-coordinate of the control point of the quadratic curve
        x1a - the x-coordinate of the second end point of the quadratic curve
        y1a - the y-coordinate of the second end point of the quadratic curve
        x0b - the x-coordinate of the first end point of the cubic curve
        y0b - the y-coordinate of the first end point of the cubic curve
        cx0b - the x-coordinate of the first control point of the cubic curve
        cy0b - the y-coordinate of the first control point of the cubic curve
        cx1b - the x-coordinate of the second control point of the cubic curve
        cy1b - the y-coordinate of the second control point of the cubic curve
        x1b - the x-coordinate of the second end point of the cubic curve
        y1b - the y-coordinate of the second end point of the cubic curve
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • cubicCubic

        public abstract int cubicCubic(double ax1,
                                       double bx1,
                                       double cx1,
                                       double dx1,
                                       double ay1,
                                       double by1,
                                       double cy1,
                                       double dy1,
                                       double ax2,
                                       double bx2,
                                       double cx2,
                                       double dx2,
                                       double ay2,
                                       double by2,
                                       double cy2,
                                       double dy2,
                                       double[] dest,
                                       int offset,
                                       IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two cubic curves, expressed as parametric equations.
        Parameters:
        ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
        bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
        cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
        dx1 - the coefficient "dx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
        ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
        by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
        cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
        dy1 - the coefficient "dy1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
        ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
        ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.
      • cubicCubicBezier

        public int cubicCubicBezier(double x0a,
                                    double y0a,
                                    double cx0a,
                                    double cy0a,
                                    double cx1a,
                                    double cy1a,
                                    double x1a,
                                    double y1a,
                                    double x0b,
                                    double y0b,
                                    double cx0b,
                                    double cy0b,
                                    double cx1b,
                                    double cy1b,
                                    double x1b,
                                    double y1b,
                                    double[] dest,
                                    int offset,
                                    IntersectionIdentifier.Return returnType)
        Identify the intersection(s) of two cubic curves, expressed as bezier control points.
        Parameters:
        x0a - the x-coordinate of the first end point of the first cubic curve
        y0a - the y-coordinate of the first end point of the first cubic curve
        cx0a - the x-coordinate of the first control point of the first cubic curve
        cy0a - the y-coordinate of the first control point of the first cubic curve
        cx1a - the x-coordinate of the second control point of the first cubic curve
        cy1a - the y-coordinate of the second control point of the first cubic curve
        x1a - the x-coordinate of the second end point of the first cubic curve
        y1a - the y-coordinate of the second end point of the first cubic curve
        x0b - the x-coordinate of the first end point of the second cubic curve
        y0b - the y-coordinate of the first end point of the second cubic curve
        cx0b - the x-coordinate of the first control point of the second cubic curve
        cy0b - the y-coordinate of the first control point of the second cubic curve
        cx1b - the x-coordinate of the second control point of the second cubic curve
        cy1b - the y-coordinate of the second control point of the second cubic curve
        x1b - the x-coordinate of the second end point of the second cubic curve
        y1b - the y-coordinate of the second end point of the second cubic curve
        dest - the destination to write the time intersections in.
        offset - the offset in the array to start writing at.
        returnType - the type of data to store in dest.
        Returns:
        the number of intersections found.