code: def _get_convex_edges(
      polygon: Tensor, h: int, w: int
  ) -> Tuple[Tensor, Tensor]:
      r"""Gets the left and right edges of a polygon for each y-coordinate y \in [0, h)
      Args:
          polygons: represents polygons to draw in BxNx2
              N is the number of points
              2 is (x, y).
          h: bottom most coordinate (top coordinate is assumed to be 0)
          w: right most coordinate (left coordinate is assumed to be 0)
      Returns:
          The left and right edges of the polygon of shape (B,B).
      """
      dtype = polygon.dtype
  
      # Check if polygons are in loop closed format, if not -> make it so
      if not torch.allclose(polygon[..., -1, :], polygon[..., 0, :]):
          polygon = torch.cat(
              (polygon, polygon[..., :1, :]), dim=-2
          )  # (B, N+1, 2)
  
      # Partition points into edges
      x_start, y_start = polygon[..., :-1, 0], polygon[..., :-1, 1]
      x_end, y_end = polygon[..., 1:, 0], polygon[..., 1:, 1]
  
      # Create scanlines, edge dx/dy, and produce x values
      ys = torch.arange(h, device=polygon.device, dtype=dtype)
      dx = ((x_end - x_start) / (y_end - y_start + 1e-12)).clamp(-w, w)
      xs = (ys[..., :, None] - y_start[..., None, :]) * dx[
          ..., None, :
      ] + x_start[..., None, :]
  
      # Only count edge in their active regions (i.e between the vertices)
      valid_edges = (
          y_start[..., None, :] <= ys[..., :, None]
      ).logical_and(ys[..., :, None] <= y_end[..., None, :])
      valid_edges |= (
          y_start[..., None, :] >= ys[..., :, None]
      ).logical_and(ys[..., :, None] >= y_end[..., None, :])
      x_left_edges = xs.clone()
      x_left_edges[~valid_edges] = w
      x_right_edges = xs.clone()
      x_right_edges[~valid_edges] = -1
  
      # Find smallest and largest x values for the valid edges
      x_left = x_left_edges.min(dim=-1).values
      x_right = x_right_edges.max(dim=-1).values
      return x_left, x_right
  
file_path: kornia/kornia/utils/draw.py
imports: from typing import List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_SHAPE
label_desc: Use image node_id 5 for calling a global function with example usage: _get_convex_edges(polygon, h, w) and returns: x_left,  x_right