code: def fit_line(
      points: Tensor, weights: Optional[Tensor] = None
  ) -> ParametrizedLine:
      """Fit a line from a set of points.
  
      Args:
          points: tensor containing a batch of sets of n-dimensional points. The  expected
              shape of the tensor is :math:`(B, N, D)`.
          weights: weights to use to solve the equations system. The  expected
              shape of the tensor is :math:`(B, N)`.
  
      Return:
          A tensor containing the direction of the fited line of shape :math:`(B, D)`.
  
      Example:
          >>> points = torch.rand(2, 10, 3)
          >>> weights = torch.ones(2, 10)
          >>> line = fit_line(points, weights)
          >>> line.direction.shape
          torch.Size([2, 3])
      """
      KORNIA_CHECK_IS_TENSOR(points, "points must be a tensor")
      KORNIA_CHECK_SHAPE(points, ["B", "N", "D"])
  
      mean = points.mean(-2, True)
      A = points - mean
  
      if weights is not None:
          KORNIA_CHECK_IS_TENSOR(weights, "weights must be a tensor")
          KORNIA_CHECK_SHAPE(weights, ["B", "N"])
          KORNIA_CHECK(points.shape[0] == weights.shape[0])
          A = A.transpose(-2, -1) @ torch.diag_embed(weights) @ A
      else:
          A = A.transpose(-2, -1) @ A
  
      # NOTE: not optimal for 2d points, but for now works for other dimensions
      _, _, V = _torch_svd_cast(A)
      V = V.transpose(-2, -1)
  
      # the first left eigenvector is the direction on the fited line
      direction = V[..., 0, :]  # BxD
      origin = mean[..., 0, :]  # BxD
  
      return ParametrizedLine(origin, direction)
  
imports: from typing import Iterator, Optional, Tuple, Union
  import torch
  from kornia.core import Module, Parameter, Tensor, normalize, where
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR, KORNIA_CHECK_SHAPE
  from kornia.geometry.linalg import batched_dot_product, squared_norm
  from kornia.geometry.plane import Hyperplane
  from kornia.utils.helpers import _torch_svd_cast
label_desc: Use image node_id 1 for calling a global function with example usage: fit_line(points, weights) and returns: ParametrizedLine