@@ -229,20 +229,21 @@ def interpolate(self, xs: list[float]) -> list[float]:
229
229
ys .append (self .points [0 ][1 ])
230
230
elif point_index == len (self .points ):
231
231
ys .append (self .points [- 1 ][1 ])
232
- last_point = self .points [point_index - 1 ]
233
- last_delta = self .slope_at (point_index - 1 )
234
- next_point = self .points [point_index ]
235
- next_delta = self .slope_at (point_index )
236
- delta_1 = x - last_point [0 ]
237
- delta_2 = x - next_point [0 ]
238
- t1 = delta_1 / (next_point [0 ] - last_point [0 ])
239
- t2 = delta_2 / (last_point [0 ] - next_point [0 ])
240
- ys .append (
241
- self .f1 (t1 , t2 ) * last_point [1 ]
242
- + self .f1 (t2 , t1 ) * next_point [1 ]
243
- + self .f3 (t2 , delta_1 ) * last_delta
244
- + self .f3 (t1 , delta_2 ) * next_delta
245
- )
232
+ else :
233
+ last_point = self .points [point_index - 1 ]
234
+ last_delta = self .slope_at (point_index - 1 )
235
+ next_point = self .points [point_index ]
236
+ next_delta = self .slope_at (point_index )
237
+ delta_1 = x - last_point [0 ]
238
+ delta_2 = x - next_point [0 ]
239
+ t1 = delta_1 / (next_point [0 ] - last_point [0 ])
240
+ t2 = delta_2 / (last_point [0 ] - next_point [0 ])
241
+ ys .append (
242
+ self .f1 (t1 , t2 ) * last_point [1 ]
243
+ + self .f1 (t2 , t1 ) * next_point [1 ]
244
+ + self .f3 (t2 , delta_1 ) * last_delta
245
+ + self .f3 (t1 , delta_2 ) * next_delta
246
+ )
246
247
return ys
247
248
248
249
0 commit comments