blue_noise_generation/src/utility.hpp

34 lines
684 B
C++

#ifndef DITHERING_UTILITY_HPP
#define DITHERING_UTILITY_HPP
#include <cmath>
#include <utility>
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<int, int> 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