(points, size_u, size_v, degree_u, degree_v, **kwargs)
return surf
Surface interpolation through the data points.

    Please refer to the Algorithm A9.4 on The NURBS Book (2nd Edition), pp.380 for details.

    Keyword Arguments:
        * ``centripetal``: activates centripetal parametrization method. *Default: False*

    :param points: data points
    :type points: list, tuple
    :param size_u: number of data points on the u-direction
    :type size_u: int
    :param size_v: number of data points on the v-direction
    :type size_v: int
    :param degree_u: degree of the output surface for the u-direction
    :type degree_u: int
    :param degree_v: degree of the output surface for the v-direction
    :type degree_v: int
    :return: interpolated B-Spline surface
    :rtype: BSpline.Surface
Surface interpolation through the data points.
Surface interpolation through the data points .
def interpolate_surface(points, size_u, size_v, degree_u, degree_v, **kwargs):
    """ Surface interpolation through the data points.

    Please refer to the Algorithm A9.4 on The NURBS Book (2nd Edition), pp.380 for details.

    Keyword Arguments:
        * ``centripetal``: activates centripetal parametrization method. *Default: False*

    :param points: data points
    :type points: list, tuple
    :param size_u: number of data points on the u-direction
    :type size_u: int
    :param size_v: number of data points on the v-direction
    :type size_v: int
    :param degree_u: degree of the output surface for the u-direction
    :type degree_u: int
    :param degree_v: degree of the output surface for the v-direction
    :type degree_v: int
    :return: interpolated B-Spline surface
    :rtype: BSpline.Surface
    """
    # Keyword arguments
    use_centripetal = kwargs.get('centripetal', False)

    # Get uk and vl
    uk, vl = compute_params_surface(points, size_u, size_v, use_centripetal)

    # Compute knot vectors
    kv_u = compute_knot_vector(degree_u, size_u, uk)
    kv_v = compute_knot_vector(degree_v, size_v, vl)

    # Do global interpolation on the u-direction
    ctrlpts_r = []
    for v in range(size_v):
        pts = [points[v + (size_v * u)] for u in range(size_u)]
        matrix_a = _build_coeff_matrix(degree_u, kv_u, uk, pts)
        ctrlpts_r += linalg.lu_solve(matrix_a, pts)

    # Do global interpolation on the v-direction
    ctrlpts = []
    for u in range(size_u):
        pts = [ctrlpts_r[u + (size_u * v)] for v in range(size_v)]
        matrix_a = _build_coeff_matrix(degree_v, kv_v, vl, pts)
        ctrlpts += linalg.lu_solve(matrix_a, pts)

    # Generate B-spline surface
    surf = BSpline.Surface()
    surf.degree_u = degree_u
    surf.degree_v = degree_v
    surf.ctrlpts_size_u = size_u
    surf.ctrlpts_size_v = size_v
    surf.ctrlpts = ctrlpts
    surf.knotvector_u = kv_u
    surf.knotvector_v = kv_v

    return surf
def interpolate_surface ( points , size_u , size_v , degree_u , degree_v , * * kwargs ) : # Keyword arguments use_centripetal = kwargs . get ( 'centripetal' , False ) # Get uk and vl uk , vl = compute_params_surface ( points , size_u , size_v , use_centripetal ) # Compute knot vectors kv_u = compute_knot_vector ( degree_u , size_u , uk ) kv_v = compute_knot_vector ( degree_v , size_v , vl ) # Do global interpolation on the u-direction ctrlpts_r = [ ] for v in range ( size_v ) : pts = [ points [ v + ( size_v * u ) ] for u in range ( size_u ) ] matrix_a = _build_coeff_matrix ( degree_u , kv_u , uk , pts ) ctrlpts_r += linalg . lu_solve ( matrix_a , pts ) # Do global interpolation on the v-direction ctrlpts = [ ] for u in range ( size_u ) : pts = [ ctrlpts_r [ u + ( size_u * v ) ] for v in range ( size_v ) ] matrix_a = _build_coeff_matrix ( degree_v , kv_v , vl , pts ) ctrlpts += linalg . lu_solve ( matrix_a , pts ) # Generate B-spline surface surf = BSpline . Surface ( ) surf . degree_u = degree_u surf . degree_v = degree_v surf . ctrlpts_size_u = size_u surf . ctrlpts_size_v = size_v surf . ctrlpts = ctrlpts surf . knotvector_u = kv_u surf . knotvector_v = kv_v return surf