これは私が見つけた式です:
r = v − [2 (n · v) n]
こんな感じで応募しました
//Calculating normal
nx = 350 - SmileyReds[i].xpos ;
ny = 350 - SmileyReds[i].ypos ;
//new calc
v_newx = SmileyReds[i].xspeed - (2 *( nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed ) ) * nx;
v_newy = SmileyReds[i].yspeed - (2 *( nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed ) ) * ny;
SmileyReds[i].xspeed = v_newx;
SmileyReds[i].yspeed = v_newy;
しかし、ボールはバウンドするのではなく、境界にぶつかると消えます。
完全なソースとプレビューhttp://jsfiddle.net/gj4Q7/4/
お時間をいただきありがとうございます。ヒントは大歓迎です。