function [face, i, j] = h3d_coords_cube_to_cell(face, u, v, buffer_width) assert(round(face) == face) assert(round(buffer_width) == buffer_width) assert(buffer_width > 0) assert( (face>=1) && (face<=6)) assert( (u>=-1) && (u <= 1)) assert( (v>=-1) && (v <= 1)) % convert u in [-1, 1] to [0, 1] u = (u + 1) / 2; v = (v + 1) / 2; n = buffer_width; % now convert [0, 1] to a cell [1 n] % cell 1 takes interval [0, 1/n] % cell k takes interval [(k-1)/n, k/n] % cell n takes interval [1-1/n, 1] if u == 1 i = n; else i = 1 + floor(u * n); end if v == 1 j = n; else j = 1 + floor(v * n); end