Как можно число спроецировать на вектор?
я так понимаю вы предлагаете заменить фи на нормаль плоскости контакта соприкосновения, а вместо углов движения использовать вектор движения.
u1 = V1x*Nx+V1y*Ny;
u2 = V2x*Nx+V2y*Ny;
V1' = V1 + N*(2*m2*(u2-u1)/(m1+m2));
V2' = V2 + N*(2*m1*(u1-u2)/(m1+m2));
du1*m1+du2*m2 = 0
(2du1*u1+du1^2)*m1/2+(2*du2*u2+du2^2)*m2/2 = 0