views:

1304

answers:

3

Hi, I'm trying to find a way to calculate the intersection between a b-spline and a straight line. So far Google hasn't been much help.

+1  A: 

Your best approach might be to break down your spline into individual line segments and test each line segment for intersection with the line. The spline may intersect the line in more than one point, so you'll also have to decide which one you're interested in.

Stephen Deken
I agree, this is the usually recommended method. It's usually more efficient if you do this iteratively, refining the line segments where you find an intersection until you get the desired resolution.
Kena
+3  A: 

A pure mathematical approach:

  • Transform the spline and the line so that the line lies on the X axis.
  • Calculate the points on the spline where Y = 0 (depends on the order of the spline).
  • Transform these points back to your original cordinate system.

If this is the way you are going I can work out the necessary formulas.

Uwe Raabe
I like the approach, but how do you solve for when the spline's Y = 0? Is there a way other than evaluating the spline segments and trying to approximate it?
Herms
Depending on the order of the spline there are existing solutions to the spline equations (at least up to cubic splines). The formulas tend to get really awkward and they are not guaranteed to be low in numerical errors. As I said: a pure mathematical approach.
Uwe Raabe
A: 

The most efficient algorithm that I've heard of is called Bezier clipping.

Here's a book chapter on curve and spline intersection (pdf).

tfinniga