           (f[((k + v[5][2]) * ny + (j + v[5][1])) * nx + (i + v[5][0])] < threshold ? (1 << 5) : 0) |
           (f[((k + v[6][2]) * ny + (j + v[6][1])) * nx + (i + v[6][0])] < threshold ? (1 << 6) : 0) |
           (f[((k + v[7][2]) * ny + (j + v[7][1])) * nx + (i + v[7][0])] < threshold ? (1 << 7) : 0);
-
         for (unsigned l = 0; l < 15; l++) {
           const auto r = triangles[mccase][l];
           if (r < 0) break;

          {3,7}  // 11
        };

        //    4--------5
        //   /|       /|
        //  / |      / |
        // 7--------6  |
        // |  0-----|--1
        // | /      | /
        // |/       |/
        // 3--------2

        //      +----4---+
        //    7/|      5/|
        //    / |8     / |9
        //   +----6---+  |
        //   |  +---0-|--+
        // 11| /3   10| /1
        //   |/       |/
        //   +---2----+

        unsigned mccase =
          (f[((k + v[0][2]) * ny + (j + v[0][1])) * nx + (i + v[0][0])] < threshold ? (1 << 0) : 0) |
          (f[((k + v[1][2]) * ny + (j + v[1][1])) * nx + (i + v[1][0])] < threshold ? (1 << 1) : 0) |

          {0, 0, 1}, // 0
          {1, 0, 1}, // 1
          {1, 0, 0}, // 2
          {0, 0, 0}, // 3 
          {0, 1, 1}, // 4 
          {1, 1, 1}, // 5
          {1, 1, 0}, // 6
          {0, 1, 0}, // 7
        };

       

        unsigned vv[8] = {
          0b001,  // 0
          0b101,  // 1
          0b100,  // 2
          0b000,  // 3
          0b011,  // 4
          0b111,  // 5
          0b110,  // 6
          0b010,  // 7
        };
        const unsigned e[12][2] = {
          {0,1}, // 0
