function modClamp(v, range, opt_rangeStart) {
var start = opt_rangeStart || 0;
if (range < 0.00001) {
return start;
}
v -= start;
if (v < 0) {
    v -= Math.floor(v / range) * range;
} else {
    v = v % range;
}
return v + start;
};function lerpCircular(a, b, t, range) {
a = modClamp(a, range);
b = modClamp(b, range);
var delta = b - a;
if (Math.abs(delta) > range * 0.5) {
if (delta > 0) {
b -= range;
    } else {
      b += range;
    }
}
return modClamp(lerpScalar(a, b, t), range);
};