yes, well, you have to alter ball_dir... lol. if you'd said that earlier...
given ball_dir is measured in degrees, starting at 0 when the ball flies to the right and moving counter-clockwise when increasing (90° means up).
then you use a surface angle alpha, measured the same (horizontal plane has 0°, left and right window plane 90°. then you just use
ball_dir += 2*(alpha - ball_dir);
joey.
by the way, the first method is more flexible since you can get surface normals via tracing.