docs: def is_convex(points):
          """
          Static method. Returns True if the polygon is convex regardless 
          of whether its vertices follow a clockwise or a 
          counter-clockwise order. This is a requirement for the rest of 
          the program.
          
          :param points: Points intented to form a polygon.
          :type points: ndarray with points xyz in rows
          :returns: Whether a polygon is convex or not.
          :rtype: bool
          
          .. note:: Despite the code works for ccw polygons, in order to 
              avoid possible bugs it is always recommended to use ccw 
              rather than cw.
              
          .. warning:: This method do not check the order of the points.
          """
          # Verification based on the cross product
          n_points = points.shape[0]
          i=-1
          u = points[i] - points[i-1]
          v = points[i+1] - points[i]
          last = np.sign(np.round(np.cross(u, v)))
          while i < n_points-1:
              u = points[i] - points[i-1]
              v = points[i+1] - points[i]
              s = np.sign(np.round(np.cross(u, v)))
              if abs((s - last).max()) > 1:
                  return False
              last = s
              i += 2
          return True