code: def _build_coeff_matrix(degree, knotvector, params, points):
      
      # Number of data points
      num_points = len(points)
  
      # Set up coefficient matrix
      matrix_a = [[0.0 for _ in range(num_points)] for _ in range(num_points)]
      for i in range(num_points):
          span = helpers.find_span_linear(degree, knotvector, num_points, params[i])
          matrix_a[i][span-degree:span+1] = helpers.basis_function(degree, knotvector, span, params[i])
  
      # Return coefficient matrix
      return matrix_a
docs: Builds the coefficient matrix for global interpolation.
  
      This function only uses data points to build the coefficient matrix. Please refer to The NURBS Book (2nd Edition),
      pp364-370 for details.
  
      :param degree: degree
      :type degree: int
      :param knotvector: knot vector
      :type knotvector: list, tuple
      :param params: list of parameters
      :type params: list, tuple
      :param points: data points
      :type points: list, tuple
      :return: coefficient matrix
      :rtype: list