| 152 | } |
| 153 | |
| 154 | template<typename T, typename S> int SplinesFromSamples(int numPoints, const T pi[], S splines[], float tension, size_t stride) |
| 155 | { |
| 156 | SL_ASSERT(numPoints >= 0); |
| 157 | |
| 158 | const char* p8 = (const char*) pi; |
| 159 | |
| 160 | switch (numPoints) |
| 161 | { |
| 162 | case 0: |
| 163 | return 0; |
| 164 | case 1: |
| 165 | *splines = SplineFromPointsT<T, S>(p8, stride, 0, 0, 0, 0, tension); |
| 166 | return 1; |
| 167 | case 2: |
| 168 | *splines = SplineFromPointsT<T, S>(p8, stride, 0, 0, 1, 1, tension); |
| 169 | return 1; |
| 170 | } |
| 171 | |
| 172 | *splines++ = SplineFromPointsT<T, S>(p8, stride, 0, 0, 1, 2, tension); |
| 173 | |
| 174 | for (int i = 0; i < numPoints - 3; i++) |
| 175 | { |
| 176 | *splines++ = SplineFromPointsT<T, S>(p8, stride, 0, 1, 2, 3, tension); |
| 177 | p8 += stride; |
| 178 | } |
| 179 | |
| 180 | *splines++ = SplineFromPointsT<T, S>(p8, stride, 0, 1, 2, 2, tension); |
| 181 | |
| 182 | return numPoints - 1; |
| 183 | } |
| 184 | |
| 185 | template<typename T, typename S> int SplinesFromSamplesDynamic(int numPoints, const T pi[], S splines[], float tension, float ratio, size_t stride) |
| 186 | { |