Javascript 欧指出。此外,您可能会通过先使用%然后更正符号来获得更好的效率,例如z=x%y然后是if(z

Javascript 欧指出。此外,您可能会通过先使用%然后更正符号来获得更好的效率,例如z=x%y然后是if(z,javascript,math,rotation,distance,Javascript,Math,Rotation,Distance,欧指出。此外,您可能会通过先使用%然后更正符号来获得更好的效率,例如z=x%y然后是if(z


欧指出。此外,您可能会通过先使用
%
然后更正符号来获得更好的效率,例如
z=x%y
然后是
if(z<0){z+=y;}
。这将消除循环,但我没有在所有情况下都检查它。谢谢@Brick,这非常有效!只需将while循环中的
x
更改为xPrime,这样就不会破坏浏览器:)谢谢!伟大的。我做了你注意到的更正。此外,您可能会通过先使用
%
然后更正符号来获得更好的效率,例如
z=x%y
然后是
if(z<0){z+=y;}
。这将消除循环,但我没有在所有情况下都检查它。
var dist = Math.abs( x1 - x2 );
dist = abs(x1 % 360 - x2 % 360)
dist = min(dist, 360 - dist)
function modulo(value, mod) {
    return value - Math.floor( value/mod ) * value;
}
var dist = rotation1 - rotation2;
dist = Math.abs( modulo( (dist + 180), 360 ) - 180 );
var dist = Math.abs(rotation1 % 360 - rotation2 % 360);
dist = Math.min(dist, 360 - dist);
function modulo(x,y) {
    var xPrime = x;
    while(xPrime<0) {
        xPrime += y; // ASSUMES y > 0
    }
    return xPrime % y;
}
var distance = Math.abs(modulo(rot1,360) - modulo(rot2,360))
distance = Math.min(distance, 360-distance)
r = (r<0) ? (r+(Math.ceil(-r/360)*360)) : (r%360);