I have this code:
coords = {{{0, 0}, {1, 0}, {1, 1}, {0, 1}, {0.5, 0.1}, {1.1,
0.5}, {0.5, 1.1}, {0.1, 0.5}, {0.6, 0.6}}};
nnodes = Flatten[coords, 1];
l1 = {{0, 0}, {0.5, 0.1}, {1, 0}};
l2 = {{1, 0}, {1.1, 0.5}, {1, 1}};
l3 = {{1, 1}, {0.5, 1.1}, {0, 1}};
l4 = {{0, 1}, {0.1, 0.5}, {0, 0}};
meshvis = Graphics[BezierCurve[{l1, l2, l3, l4}, SplineDegree -> 2]];
nodevis = Graphics[{Black, PointSize[Medium], Point[nnodes]}];
nodenumb = Graphics[{MapIndexed[Text[#2[[1]], #1, {2, 2}] &, nnodes],{Black,Point[nnodes]}}];
defel = Show[meshvis, nodevis, nodenumb]
Which generetes the following figure:
This result is not what i want. I need the curve passes through all points(except through point 9). Any suggestions on how to approach this?


BezierCurve[]; recall that it only passes through the first and last points, and treats the points in between as "control points". For interpolating B-splines, see this. – J. M.'s missing motivation Jan 27 '17 at 03:40