I need an algorithm for computing the intersection points between two bicubic Bezier surfaces. Specifically, I would like to use the Divide and Conquer approach. However, the only thing I can think of so far is as follows:
1. Test the bounding boxes of each surface patch for any possible intersection - if not, then exit.
2. Test for planarity of each surface patch - if not, then increase order of Bezier patch. Continue until sufficient planarity is acquired.
3. Determine intersections of plane segments.
With this algorithm, I am fairly comfortable performing steps one and two, but am unsure how to do step three. However, I am not married to this particular algorithm - it simply is the only one that I can think of. One potential problem that makes me hesitant is the ability to quickly overload the computer by increasing the order over and over again until each surface patch is sufficiently planar - something I foresee as requiring a very high order Bezier surface. If you are aware of another algorithm, feel free to submit that.
I'm pretty generous with points and do not feel that this problem is particularly difficult for someone who is comfortable with 3D graphics (I, however, am not - so I could really use some help). I would really appreciate a walkthrough of the logic that is need to carry this out.
One final note, I am attempting to do this in MATLab because I don't have any other programming language available to me. I am comfortable with many other languages (Basic, Fortran, Pascal C (rusty) and LISP (rusty), so please keep that in mind.