Source code for eksternlab.splines

from scipy.interpolate import CubicSpline
import numpy as np


[docs]def height(x, y): """ Returns the height of the lane as a function of horizontal distance Parameters: x: array List with x-coordinates of the knots y: array List with the y-coordinates of the knots >>> from eksternlab import height >>> x = [0.0, 0.2, 0.4, 0.6, 0.8] >>> y = [1.0, 0.7, 0.4, 0.5, 0.6] >>> h = height(x, y) To get the height at an arbitrary position x >>> x1 = 0.23 >>> y1 = h(x1) """ return CubicSpline(x, y, bc_type='natural', extrapolate=True)
[docs]def slope(cs, x): """ Return the slope of the curve Parameters: cs: CubicSpline Instance of a cubic spline class x: float or array of floats Points at which to evaluate the slope angle >>> from eksternlab import slope >>> x = [0.23, 0.26, 0.39] >>> alpha = slope(h, x) """ values = cs(x, 1) return -np.arctan(values)
[docs]def curvature(cs, x): """ Return the curvature (inverse radius of curvature) of the lane. Parameters: cs: CubicSpline Instance of the CubicSpline calss x: float or array of floats Points at which to evaluate the curvature >>> from eksternlab import curvature >>> x = [0.23, 0.26, 0.39] >>> kappa = curvature(h, x) """ second_deriv = cs(x, 2) deriv = cs(x, 1) return second_deriv/(1.0 + deriv**2)**1.5