User:Wakebrdkid/Spline interpolation

Article

Tests

BeginPackage["Wikicode`SplineInterpolation`"]

Interpolate::usage = "Interpolate[points] returns a closed \
BSplineCurve passing through the given points."

Begin["`Private`"]

Interpolate[points_] := 
  BSplineCurve@{#2, #2 + Normalize[#3 - #] Norm[#3 - #2]/3, #3 - 
       Normalize[#4 - #2] Norm[#3 - #2]/3, #3} & @@@ 
   Partition[points, 4, 1, {2, 2}];

End[]
EndPackage[]