summaryrefslogtreecommitdiff
path: root/include/mbgl/math/wrap.hpp
blob: 16dc598c22826171757de1c7a5f4e1b5c5457ebe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once

#include <cmath>

namespace mbgl {
namespace util {

// Constrains n to the given range (including min, excluding max) via modular
// arithmetic.
template <typename T>
T wrap(T value, T min, T max) {
    T d = max - min;
    return std::fmod((std::fmod((value - min), d) + d), d) + min;
}

} // namespace util
} // namespace mbgl