code: def find_ctrlpts_curve(t, curve, **kwargs):
      
      # Get keyword arguments
      span_func = kwargs.get('find_span_func', helpers.find_span_linear)
  
      # Find spans and the constant index
      span = span_func(curve.degree, curve.knotvector, len(curve.ctrlpts), t)
      idx = span - curve.degree
  
      # Find control points involved in evaluation of the curve point at the input parameter
      curve_ctrlpts = [() for _ in range(curve.degree + 1)]
      for i in range(0, curve.degree + 1):
          curve_ctrlpts[i] = curve.ctrlpts[idx + i]
  
      # Return control points array
      return curve_ctrlpts
docs: Finds the control points involved in the evaluation of the curve point defined by the input parameter.
  
      This function uses a modified version of the algorithm *A3.1 CurvePoint* from The NURBS Book by Piegl & Tiller.
  
      :param t: parameter
      :type t: float
      :param curve: input curve object
      :type curve: abstract.Curve
      :return: 1-dimensional control points array
      :rtype: list