code: def transform_points(trans_01: Tensor, points_1: Tensor) -> Tensor:
      r"""Function that applies transformations to a set of points.
  
      Args:
          trans_01: tensor for transformations of shape
            :math:`(B, D+1, D+1)`.
          points_1: tensor of points of shape :math:`(B, N, D)`.
      Returns:
          a tensor of N-dimensional points.
  
      Shape:
          - Output: :math:`(B, N, D)`
  
      Examples:
  
          >>> points_1 = torch.rand(2, 4, 3)  # BxNx3
          >>> trans_01 = torch.eye(4).view(1, 4, 4)  # Bx4x4
          >>> points_0 = transform_points(trans_01, points_1)  # BxNx3
      """
      KORNIA_CHECK_IS_TENSOR(trans_01)
      KORNIA_CHECK_IS_TENSOR(points_1)
      if (
          not trans_01.shape[0] == points_1.shape[0]
          and trans_01.shape[0] != 1
      ):
          raise ValueError(
              f"Input batch size must be the same for both tensors or 1. Got {trans_01.shape} and {points_1.shape}"
          )
      if not trans_01.shape[-1] == (points_1.shape[-1] + 1):
          raise ValueError(
              f"Last input dimensions must differ by one unit Got{trans_01} and {points_1}"
          )
  
      # We reshape to BxNxD in case we get more dimensions, e.g., MxBxNxD
      shape_inp = list(points_1.shape)
      points_1 = points_1.reshape(
          -1, points_1.shape[-2], points_1.shape[-1]
      )
      trans_01 = trans_01.reshape(
          -1, trans_01.shape[-2], trans_01.shape[-1]
      )
      # We expand trans_01 to match the dimensions needed for bmm
      trans_01 = torch.repeat_interleave(
          trans_01,
          repeats=points_1.shape[0] // trans_01.shape[0],
          dim=0,
      )
      # to homogeneous
      points_1_h = convert_points_to_homogeneous(points_1)  # BxNxD+1
      # transform coordinates
      points_0_h = torch.bmm(points_1_h, trans_01.permute(0, 2, 1))
      points_0_h = torch.squeeze(points_0_h, dim=-1)
      # to euclidean
      points_0 = convert_points_from_homogeneous(points_0_h)  # BxNxD
      # reshape to the input shape
      shape_inp[-2] = points_0.shape[-2]
      shape_inp[-1] = points_0.shape[-1]
      points_0 = points_0.reshape(shape_inp)
      return points_0
  
file_path: kornia/kornia/geometry/linalg.py
imports: from __future__ import annotations
  import torch
  from kornia.core import Tensor, zeros_like
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR, KORNIA_CHECK_SHAPE
  from kornia.geometry.conversions import convert_points_from_homogeneous, convert_points_to_homogeneous
label_desc: Use image node_id 4 for calling a global function with example usage: transform_points(trans_01, points_1) and returns: points_0