views:

1019

answers:

1

I am working on a geometry problem that requires finding the intersection of two parabolic arcs in any rotation. I was able to intesect a line and a parabolic arc by rotating the plane to align the arc with an axis, but two parabolas cannot both align with an axis. I am working on deriving the formulas, but I would like to know if there is a resource already available for this.

+5  A: 

I'd first define the equation for the parabolic arc in 2D without rotations:

  x(t) = ax² + bx + c
  y(t) = t;

You can now apply the rotation by building a rotation matrix:

  s = sin(angle)
  c = cos(angle)

  matrix = | c -s |
           | s  c |

Apply that matrix and you'll get the rotated parametric equation:

x' (t) = x(t) * c - s*t;
y' (t) = x(t) * s + c*t;

This will give you two equations (for x and y) of your parabolic arcs.

Do that for both of your rotated arcs and subtract them. This gives you an equation like this:

  xa'(t) = rotated equation of arc1 in x
  ya'(t) = rotated equation of arc1 in y.
  xb'(t) = rotated equation of arc2 in x
  yb'(t) = rotated equation of arc2 in y.
  t1 = parametric value of arc1
  t2 = parametric value of arc2

  0 = xa'(t1) - xb'(t2)
  0 = ya'(t1) - yb'(t2)

Each of these equation is just a order 2 polynomial. These are easy to solve.

To find the intersection points you solve the above equation (e.g. find the roots).

You'll get up to two roots for each axis. Any root that is equal on x and y is an intersection point between the curves.

Getting the position is easy now: Just plug the root into your parametric equation and you can directly get x and y.

Nils Pipenbrinck