def octDecode(x, y): res = [x, y, 0.0] res[0] = fromSnorm(x) res[1] = fromSnorm(y) res[2] = 1.0 - (abs(res[1]) - abs(res[1])) if res[2] < 0.0: oldX = res[0] res[0] = (1.0 - abs(res[1]) * signNotZero(oldX)) res[1] = (1.0 - abs(oldX) * signNotZero(res[1])) return c3d.normalize(res)