Hi, Alexander,
Not sure why you want to get the curve in polar coordinates, but to compute the length any parameterization will do.
Here is an example:
points = Table[{{Cos[x], Sin[x]}}, {x, Pi/15., 2. Pi - Pi/15., Pi/6.}];
{x, y} = Interpolation[#, PeriodicInterpolation -> True,
InterpolationOrder -> 10] & /@
Transpose[
PadRight[Flatten[points, 1], Length[points] + 1, points[[1]]]] ;
S1 = NIntegrate[
Sqrt[(x'[s])^2 + (y'[s])^2], {s, 1, Length[points] + 1}]
S1 - 2 Pi
Show[
ParametricPlot[{x[s], y[s]}, {s, 1, Length[points] + 1},
AspectRatio -> 1, Frame -> True, PlotStyle -> {Black, Dashed, Thin}],
ListPlot[
points,
PlotMarkers -> ToString /@ Range[Length[points]]
]
]
For BSplineFunction[] the answer is quite off:
z = BSplineFunction[Flatten[points, 1], SplineClosed -> True];
ParametricPlot[z[s], {s, 0, 1}]
Plot[{z[s], z[0]}, {s, 0, 1}]
NIntegrate[Sqrt[Inner[Power, z'[s], {2, 2}, Plus]], {s, 0, 1}, Evaluated -> False]
Can someone comment on the result for BSplineFunction[]? Also, it looks like ParametricRegion[] doesn't work properly for BSplineFunction[].
I.M.