code: def separate_ctrlpts_weights(ctrlptsw):
      
      ctrlpts = []
      weights = []
      for ptw in ctrlptsw:
          temp = [float(pw / ptw[-1]) for pw in ptw[:-1]]
          ctrlpts.append(temp)
          weights.append(ptw[-1])
  
      return [ctrlpts, weights]
docs: Divides weighted control points by weights to generate unweighted control points and weights vector.
  
      This function is dimension agnostic, i.e. control points can be in any dimension but the last element of the array
      should indicate the weight.
  
      :param ctrlptsw: weighted control points
      :type ctrlptsw: list, tuple
      :return: unweighted control points and weights vector
      :rtype: list