code: def compute_fat_line(nodes):
      
      coeff_a, coeff_b, coeff_c = compute_implicit_line(nodes)
      # NOTE: This assumes, but does not check, that there are two rows.
      _, num_nodes = nodes.shape
      d_min = 0.0
      d_max = 0.0
      for index in six.moves.xrange(1, num_nodes - 1):  # Only interior nodes.
          curr_dist = (
              coeff_a * nodes[0, index] + coeff_b * nodes[1, index] + coeff_c
          )
          if curr_dist < d_min:
              d_min = curr_dist
          elif curr_dist > d_max:
              d_max = curr_dist
      return coeff_a, coeff_b, coeff_c, d_min, d_max
docs: Compute the "fat line" around a B |eacute| zier curve.
  
      Both computes the implicit (normalized) form
  
      .. math::
  
         ax + by + c = 0
  
      for the line connecting the first and last node in ``nodes``.
      Also computes the maximum and minimum distances to that line
      from each control point.
  
      Args:
          nodes (numpy.ndarray): ``2 x N`` array of nodes in a curve.
  
      Returns:
          Tuple[float, float, float, float, float]: The 5-tuple of
  
          * The :math:`x` coefficient :math:`a`
          * The :math:`y` coefficient :math:`b`
          * The constant :math:`c`
          * The "minimum" distance to the fat line among the control points.
          * The "maximum" distance to the fat line among the control points.