I decided to pull the polynomial root finding code out of the Intersection object to create a Polynomial object. Polynomial supports the following functionality: represent any degree polynomial, evaluate at x, multiply two polynomials, find derivative, find roots, and convert to text.
Root finding uses the closed form equations for quadratic, cubic, and quartic functions. This last one is needed for solving the ellipse-ellipse intersection problem so I’m a wee bit closer to solving that one. I have a feeling that I’ll be able to use the ellipse-ellipse approach to solve the ellipse-quadratic Bezier and quadratic Bezier-quadratic Bezier intersection problems.
The cubic Bezier intersection problems involve polynomials anywhere from degree 6 to 9. I’m not sure if it’s practical to solve these intersections using polynomials, but I have implemented a bisection routine and I plan to add Newton’s method just in case. There are a bunch of other supporting routines that need to be written to solve higher-order polynomials. Thank goodness for David Eberly’s site and his book “3D Game Engine Design” (ISBN 1-55860-593-2). Without these, I don’t know how I would have figured out as much as I have so far.