code: public static float[] restoreVertices(int[] intVertices, int[] gridIndices, Grid grid, float vertexPrecision) {
          int ve = CTM_POSITION_ELEMENT_COUNT;
          int vc = intVertices.length / ve;
  
          int prevGridIndex = 0x7fffffff;
          int prevDeltaX = 0;
          float[] vertices = new float[vc * ve];
          for (int i = 0; i < vc; ++i) {
              // Get grid box origin
              int gridIdx = gridIndices[i];
              float[] gridOrigin = gridIdxToPoint(grid, gridIdx);
  
              // Restore original point
              int deltaX = intVertices[i * ve];
              if (gridIdx == prevGridIndex) {
                  deltaX += prevDeltaX;
              }
              vertices[i * ve] = vertexPrecision * deltaX + gridOrigin[0];
              vertices[i * ve + 1] = vertexPrecision * intVertices[i * ve + 1] + gridOrigin[1];
              vertices[i * ve + 2] = vertexPrecision * intVertices[i * ve + 2] + gridOrigin[2];
  
              prevGridIndex = gridIdx;
              prevDeltaX = deltaX;
          }
          return vertices;
      }
docs: Calculate inverse derivatives of the vertices.
  
  @param intVertices encoded vertices
  @param gridIndices index of the used index
  @param grid grid definition
  @param vertexPrecision used encoding precision
  @return the restored vertices