33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from skyfield.curvelib import Splines, build_spline_given_ends
|
|
|
|
def test_spline_and_derivative():
|
|
parameters = 10, 12, 2.0, 3.0, 5.0, 7.0
|
|
x = 8.0, 9.0, 10.0, 11.0, 12.0
|
|
expected_values = 3.0, 5.0, 7.0, 10.5, 17.0
|
|
expected_slope = 2.5, 1.75, 2.5, 4.75, 8.5
|
|
|
|
# Does the Spline class work?
|
|
|
|
curve = Splines(parameters)
|
|
assert tuple(curve(x)) == expected_values
|
|
assert tuple(curve.derivative(x)) == expected_slope
|
|
|
|
# Can we rebuild the parameters from its endpoints and slopes?
|
|
|
|
parameters2 = build_spline_given_ends(
|
|
10, curve(10), curve.derivative(10),
|
|
12, curve(12), curve.derivative(12))
|
|
|
|
assert parameters == parameters2
|
|
|
|
# If we rebuild the spline around different bounds, does it still
|
|
# produce the same curve?
|
|
|
|
for lower, upper in (8,10), (8,9), (21,23):
|
|
parameters3 = build_spline_given_ends(
|
|
lower, curve(lower), curve.derivative(lower),
|
|
upper, curve(upper), curve.derivative(upper))
|
|
curve3 = Splines(parameters3)
|
|
assert tuple(curve3(x)) == expected_values
|
|
assert tuple(curve3.derivative(x)) == expected_slope
|