#ifndef DITHERING_UTILITY_HPP #define DITHERING_UTILITY_HPP #include #include namespace utility { inline int twoToOne(int x, int y, int width, int height) { while (x < 0) { x += width; } while (y < 0) { y += height; } x = x % width; y = y % height; return x + y * width; } inline std::pair oneToTwo(int i, int width) { return {i % width, i / width}; } inline float dist(int a, int b, int width) { auto axy = utility::oneToTwo(a, width); auto bxy = utility::oneToTwo(b, width); float dx = axy.first - bxy.first; float dy = axy.second - bxy.second; return std::sqrt(dx * dx + dy * dy); } } // namespace utility #endif