code: def pix_to_non_square_ndc(i, S1, S2):
      """
      The default value of the NDC range is [-1, 1].
      However in the case of non square images, we scale the NDC range
      to maintain the aspect ratio. The smaller dimension has NDC
      range from [-1, 1] and the other dimension is scaled by
      the ratio of H:W.
      e.g. for image size (H, W) = (64, 128)
         Height NDC range: [-1, 1]
         Width NDC range: [-2, 2]
  
      Args:
          i: pixel position on axes S1
          S1: dimension along with i is given
          S2: the other image dimension
  
      Returns:
          pixel: NDC coordinate of point i for dimension S1
      """
      # NDC: x-offset + (i * pixel_width + half_pixel_width)
      ndc_range = non_square_ndc_range(S1, S2)
      offset = ndc_range / 2.0
      return -offset + (ndc_range * i + offset) / S1
  
file_path: pytorch3d/pytorch3d/renderer/mesh/rasterize_meshes.py
imports: from typing import List, Optional, Tuple, Union
  import numpy
  import torch
  from pytorch3d import _C
  from ..utils import parse_image_size
  from .clip import clip_faces, ClipFrustum, convert_clipped_rasterization_to_original_faces
label_desc: Use image node_id 3 for calling a global function with example usage: pix_to_non_square_ndc(i, S1, S2) and returns: unknown