function [face, u, v] = h3d_coords_s2_to_cube(s) % function [face, u, v] = h3d_coords_s2_to_cube(s) % % s: 3D vector on the sphere % % face: between 1 and 6 % u, v: both between -1 and 1 s = s / norm(s); sa = abs(s); if (sa(1) >= sa(2)) && (sa(1) >= sa(3)) if sign(s(1)) > 0 face = 1; else face = 4; end u = s(2) / s(1); v = s(3) / s(1); return end if (sa(2) >= sa(1)) && (sa(2) >= sa(3)) if sign(s(2)) > 0 face = 2; else face = 5; end u = s(1) / s(2); v = s(3) / s(2); return end if (sa(3) >= sa(2)) && (sa(3) >= sa(1)) if sign(s(3)) > 0 face = 3; else face = 6; end u = s(1) / s(3); v = s(2) / s(3); return end error(sprintf('bug: s = %f %f %f\n',s(1),s(2),s(3)));