docstr: Initializes a cube given the bottom front left vertex coordinate
  and computes the cube configuration given vertex values and isolevel.
  
  Edge and vertex convention:
  
              v4_______e4____________v5
              /|                    /|
             / |                   / |
          e7/  |                e5/  |
           /___|______e6_________/   |
        v7|    |                 |v6 |e9
          |    |                 |   |
          |    |e8               |e10|
       e11|    |                 |   |
          |    |______e0_________|___|
          |   / v0(bfl_v)        |   |v1
          |  /                   |  /
          | /e3                  | /e1
          |/_____________________|/
          v3         e2          v2
  
  Args:
      bfl_vertex: a tuple of size 3 corresponding to the bottom front left vertex
          of the cube in (x, y, z) format
      volume: the 3D scalar data
      isolevel: the isosurface value used as a threshold for determining whether a point
          is inside/outside the volume
docstr_tok: ["Initializes","a","cube","given","the","bottom","front","left","vertex","coordinate","and","computes","the","cube","configuration","given","vertex","values","and","isolevel",".","Edge","and","vertex","convention",":","v4_______e4____________v5","\/|","\/|","\/","|","\/","|","e7\/","|","e5\/","|","\/___|______e6_________\/","|","v7|","|","|v6","|e9","|","|","|","|","|","|e8","|e10|","e11|","|","|","|","|","|______e0_________|___|","|","\/","v0","(","bfl_v",")","|","|v1","|","\/","|","\/","|","\/e3","|","\/e1","|\/_____________________|\/","v3","e2","v2","Args",":","bfl_vertex",":","a","tuple","of","size","3","corresponding","to","the","bottom","front","left","vertex","of","the","cube","in","(","x",",","y",",","z",")","format","volume",":","the","3D","scalar","data","isolevel",":","the","isosurface","value","used","as","a","threshold","for","determining","whether","a","point","is","inside\/outside","the","volume"]
code: def __init__(
      self,
      bfl_v: Tuple[int, int, int],
      volume: torch.Tensor,
      isolevel: float,
  ) -> None:
      """
      Initializes a cube given the bottom front left vertex coordinate
      and computes the cube configuration given vertex values and isolevel.
  
      Edge and vertex convention:
  
                  v4_______e4____________v5
                  /|                    /|
                 / |                   / |
              e7/  |                e5/  |
               /___|______e6_________/   |
            v7|    |                 |v6 |e9
              |    |                 |   |
              |    |e8               |e10|
           e11|    |                 |   |
              |    |______e0_________|___|
              |   / v0(bfl_v)        |   |v1
              |  /                   |  /
              | /e3                  | /e1
              |/_____________________|/
              v3         e2          v2
  
      Args:
          bfl_vertex: a tuple of size 3 corresponding to the bottom front left vertex
              of the cube in (x, y, z) format
          volume: the 3D scalar data
          isolevel: the isosurface value used as a threshold for determining whether a point
              is inside/outside the volume
      """
      x, y, z = bfl_v
      self.x, self.y, self.z = x, y, z
      self.bfl_v = bfl_v
      self.verts = [
          [x + (v & 1), y + (v >> 1 & 1), z + (v >> 2 & 1)]
          for v in range(8)
      ]  # vertex position (x, y, z) for v0-v1-v4-v5-v3-v2-v7-v6
  
      # Calculates cube configuration index given values of the cube vertices
      self.cube_index = 0
      for i in range(8):
          v = self.verts[INDEX[i]]
          value = volume[v[2]][v[1]][v[0]]
          if value < isolevel:
              self.cube_index |= 1 << i
  
file_path: pytorch3d/pytorch3d/ops/marching_cubes.py
imports: from typing import List, Optional, Tuple
  import torch
  from pytorch3d import _C
  from pytorch3d.ops.marching_cubes_data import EDGE_TO_VERTICES, FACE_TABLE, INDEX
  from pytorch3d.transforms import Translate
  from torch.autograd import Function
label_desc: Use image node_id 1 to create a new Cube object  with example: obj = Cube(bfl_v, volume, isolevel)