   Intersection of Circle with an Ellipse...
  HiI''m working on a 2d game that requires collision of an ellipse and a circle.I can detect the collision pretty easily... my problem is calculating the normal at the point of intersection.At the moment I''m planning on solving the equations for a circle with the equations for an ellipse to calculate the intersection points, and then taking an average to get an approximation on the collision point... Then I thought I might get the normal by subtracting the collision point from the center of the circle.But this way seems unreliable and unnecessary... even though I can''t think of another way.Any suggestions?Thanks for your time 
  How do you detect the collision??   --------------------------------------I am the master of stories.....If only I could just write them down... ;  just a suggestion. never tested though (never had to do such things ). so, the closest point on an ellipse to a sphere would be same as the closest point on an ellipse to the centre of the sphere. so, you need to fin the point on the ellipse that is the closest from the centre of the sphere, and use that point to compute the normal. also, you can transform the centre of your sphere into the ellipse space, by applying the ellipse''s inverse transform on the point, and doing a closest point caclulation of a point with a sphere of unit radius. Then you transform that point bacj into world coordinate, and it should give you a point on the ellipse, that is the closest to the sphere centre. Then, you check if that point is in the sphere. if so, you have an intersection, and the normal of intersection will be the vector from the centre of the sphere to the point on the ellipse. you can also calculate the depth of collision, and the intersection point on the sphere, all in one go.  // Ellipse [O, rx, ry, angle]// Sphere  [C, r]// result  [Psphere, Pellipse]// transform the sphere centre into ellipse space,// by applying teh inverse transform of the ellipseVector T = (C - O);T.Rotate(-angle);T.x /= rx;T.y /= ry;// project the point on the unit sphere.T.Normalise();// transform the closest point back into world spaceT.x *= rx;T.y *= ry;T.Rotate(angle);T += O;// now we have the closest point, check for intersectionVector D = T - C;float  d2 = D.Dot(D);// sphere too far away, no intersectionif (d2 > r*r)    return false;// calculate the separation vector and distanced = sqrt(d2);D /= d;// setup the collison pointsPsphere  = C + D * r;Pellipse = T;;  Thanks olii, that makes sense.Haven''t tested it either but I doubt I''ll have problems.    