docstr: Computes whether point is inside triangle tri
  Note that point needs to live in the space spanned by tri = (a, b, c)
  i.e. by taking the projection of an arbitrary point on the space spanned by tri
  
  Args:
      point: FloatTensor of shape (3)
      tri: FloatTensor of shape (3, 3)
  Returns:
      inside: BoolTensor of shape (1)
docstr_tok: ["Computes","whether","point","is","inside","triangle","tri","Note","that","point","needs","to","live","in","the","space","spanned","by","tri","=","(","a",",","b",",","c",")","i.e",".","by","taking","the","projection","of","an","arbitrary","point","on","the","space","spanned","by","tri","Args",":","point",":","FloatTensor","of","shape","(","3",")","tri",":","FloatTensor","of","shape","(","3",",","3",")","Returns",":","inside",":","BoolTensor","of","shape","(","1",")"]
code: def _is_inside_triangle(
      point: torch.Tensor, tri: torch.Tensor
  ) -> torch.Tensor:
      """
      Computes whether point is inside triangle tri
      Note that point needs to live in the space spanned by tri = (a, b, c)
      i.e. by taking the projection of an arbitrary point on the space spanned by tri
  
      Args:
          point: FloatTensor of shape (3)
          tri: FloatTensor of shape (3, 3)
      Returns:
          inside: BoolTensor of shape (1)
      """
      v0 = tri[1] - tri[0]
      v1 = tri[2] - tri[0]
      area = torch.cross(v0, v1).norm() / 2.0
  
      # check if triangle is a line or a point. In that case, return False
      if area < 5e-3:
          return False
      bary = TestPointMeshDistance._point_to_bary(point, tri)
      inside = ((bary >= 0.0) * (bary <= 1.0)).all()
      return inside
  
imports: import unittest
  import numpy
  import torch
  from pytorch3d import _C
  from pytorch3d.loss import point_mesh_edge_distance, point_mesh_face_distance
  from pytorch3d.structures import Meshes, packed_to_list, Pointclouds
  from .common_testing import get_random_cuda_device, TestCaseMixin
label_desc: Use image node_id 6 for calling the TestPointMeshDistance obj's underlying member method code with example usage: obj._is_inside_triangle(point, tri) and returns: inside, False