struct Curve_interp { Int dim, n, in; Bool cls; MatDoub pts; VecDoub s; VecDoub ans; NRvector srp; Curve_interp(MatDoub &ptsin, Bool close=0) : n(ptsin.nrows()), dim(ptsin.ncols()), in(close ? 2*n : n), cls(close), pts(dim,in), s(in), ans(dim), srp(dim) { Int i,ii,im,j,ofs; Doub ss,soff,db,de; ofs = close ? n/2 : 0; s[0] = 0.; for (i=0;i0) { s[i] = s[i-1] + rad(&ptsin[ii][0],&ptsin[im][0]); if (s[i] == s[i-1]) throw("error in Curve_interp"); } } ss = close ? s[ofs+n]-s[ofs] : s[n-1]-s[0]; soff = s[ofs]; for (i=0;i