有些设备无法使用旋转270,所以我想将其转换为-90
如何让这个系列改为使用-90, 0, 90, 180
?
var val = 0;
val = (val + 90) % 360; // 90
val = (val + 90) % 360; // 180
val = (val + 90) % 360; // 270
val = (val + 90) % 360; // 0
答案 0 :(得分:1)
这是一个通过在结尾处减去90来生成模数系列0..90..180..270
的例子(生成器函数,但是可以真正应用于其他任何东西,只显示模式)
function *g() {
let x = 0;
while(true) {
x = (x + 90) % 360;
yield x - 90;
}
}
let gen = g();
for (let i = 0; i < 10; i++)
console.log(gen.next().value);
答案 1 :(得分:0)
您可以在模数之前添加(几乎)180,然后再减去它。
不完全是180因为那样你会得到-180而不是180。
var val = 0;
for(var i=0; i<8; ++i) {
console.log(val = (val + 90 + 179) % 360 - 179);
}
&#13;
答案 2 :(得分:0)
这是愚弄处理器的另一个小技巧:
function toRad(deg){
return deg * Math.PI / 180;
}
function toDeg(rad){
return Math.round(rad * 180 / Math.PI);
}
function f(deg){
var rad = toRad(deg);
return toDeg(
Math.round(Math.sin(rad))
? Math.asin(Math.sin(rad))
: Math.acos(Math.cos(rad))
);
}
var val = 0;
val = (val + 90) % 360; // 90
console.log(val,f(val));
val = (val + 90) % 360; // 180
console.log(val,f(val));
val = (val + 90) % 360; // 270
console.log(val,f(val));
val = (val + 90) % 360; // 0
console.log(val,f(val));