function reflect(dx,dy){
var power = Math.sqrt(dx*dx + dy*dy); // сила=корень из (dx*dx + dy*dy)
var sinDrop = dy/power; //sin(угла падения) = dy / сила
var cosDrop = dx/power; //cos(угла падения) = dx / сила
var normal = Math.atan2(ball.y - wall.y, wall.x - ball.x);
var sinL = Math.sin(normal) * cosDrop - Math.cos(normal) * sinDrop; //sin(L)=sin(Нормали)*cos(падения)-cos(Нормали)*sin(падения);
var cosL = Math.cos(normal) * cosDrop + Math.sin(normal) * sinDrop; //cos(L)=cos(Нормали)*cos(падения)+sin(Нормали)*sin(падения);
var reflSin = sinL * Math.cos(normal) + cosL * Math.sin(normal); //sin(отражения)=sin(L)*cos(Нормали)+cos(L)*sin(Нормали);
var reflCos = cosL * Math.cos(normal) - sinL * Math.sin(normal); //cos(отражения)=cos(L)*cos(Нормали)-sin(L)*sin(Нормали);
dx = Math.cos(reflCos) * power; //dx = cos(угол)*сила
dy = Math.sin(reflSin) * power; //dy = sin(угол)*сила
return {
dx:dx,
dy:dy
}
} ;