I have data of closed shape form
ListPlot[data, AspectRatio -> 1]
I would like to Interpolate this data to get the missing points so I am using BSplineFunction
like this
interdata=BSplineFunction[Flatten[points, 1]];
ParametricPlot[bsF[t], {t, 0, 1}]
as you can see, the data needs to be sorted in a specific way to make all the points on the circumference of the closed shape and get something like this
Update
The last thing I would like to do is to get points on the circumference that are equally spaced. my idea was that after interpolation I will be able to do that. According to @kglr answer, it can be done as follows
equallyspaceddata = Table[{bsF[t]}, {t, 0, 1, 0.01}];
ListPlot[equallyspaceddata, AspectRatio -> 1, PlotStyle -> Black]
as you can see the points in the top half are denser compared to the bottom one. How can I get equally spaced points?