docs: def generate_cylindrical_points(start, end, start_radius, end_radius,
                                  linspace_count=_LINSPACE_COUNT):
      '''Generate a 3d mesh of a cylinder with start and end points, and varying radius
  
      Based on: http://stackoverflow.com/a/32383775
      '''
      v = end - start
      length = norm(v)
      v = v / length
      n1, n2 = _get_normals(v)
  
      # pylint: disable=unbalanced-tuple-unpacking
      l, theta = np.meshgrid(np.linspace(0, length, linspace_count),
                             np.linspace(0, 2 * np.pi, linspace_count))
  
      radii = np.linspace(start_radius, end_radius, linspace_count)
      rsin = np.multiply(radii, np.sin(theta))
      rcos = np.multiply(radii, np.cos(theta))
  
      return np.array([start[i] +
                       v[i] * l +
                       n1[i] * rsin + n2[i] * rcos
                       for i in range(3)])