k = 
        1/2;
 M1  =  {{2, -2, 1, 1}, {-3, 3, -2, -1}, {0, 0, 1, 
            0}, {1, 0, 0, 0}};
M2  =  {{0, 1, 0, 0}, {0, 0, 1, 0}, {-k, 0, k, 0}, {0, -k, 
            0, k}};
Clear[u]; U = {u^3, u^2, u, 1};
M = M1 . M2

For[i = 2; plist = {}, 
      i ≤ Length[P] - 2, i = i + 1, 
      For[u = 0, u ≤ 1.0, 
        u = u + 0.1, 
U = {u*u*u, u*u, u, 
            1}; 
plist = 
          Append[plist, 
            U . M . {P[[i - 1]], P[[i]], P[[i + 1]], 
                P[[i + 2]]}]]]

g1 = 
      Graphics[{PointSize[0.025], Thickness[0.01], Line[plist]}]

For[i = 1; clist = {PointSize[0.035]}, i ≤ Length[P], 
      i = i + 1, 
      clist = Append[clist, Point[P[[i]]]]]
g2  =  Graphics[clist]

Show[{g1, g2}, Axes -> Automatic]