در حالت کلی برای محاسبه تفاضل دورانی از روش زیر استفاده کنید فرض شده حد پایین صفر و حد بالا توسط کاربر انتخاب میشه.
template <typename T>
T abssDiffCircularValue(T val1, T val2, T upper_range) {
auto dif1 = val1 - val2;
if (dif1 < 0)
dif1 = upper_range + dif1;
auto dif2 = val2 - val1;
if (dif2 < 0)
dif2 = upper_range + dif2;
return std::min(dif1, dif2);
}