First, I want to say that math is not exactly my strong point. In fact, I am terrible at anything above basic algebra.

I am trying to create a collision detection routine that will compute the angle of deflection. i.e. a ball hitting a wall. I can do this simply by reversing the sign of the direction vector, but this only works for a flat surface. I will have some curved / angled walls that I will need to calculate for. I know I need to start off by finding the angle between the ball's direction vector and the plane normal but I am not exactly sure how to go about this.

If anyone can explain or point me to a good tutorial??