Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何规范罗盘输入?_Javascript_Mathematical Optimization - Fatal编程技术网

Javascript 如何规范罗盘输入?

Javascript 如何规范罗盘输入?,javascript,mathematical-optimization,Javascript,Mathematical Optimization,我想根据接收到的角度旋转指南针图像。输入角度在0和359之间,因此当我从0旋转-1度时,图像旋转一整圈并设置为359: function setCompass(degrees){ $("#compass").stop().transition({rotate: -1*degrees +'deg'}); } 我试图通过返回到-1而不是359来解决问题,因此我将代码更改为以下内容: function setCompass(degrees){ if (degrees>180){

我想根据接收到的角度旋转指南针图像。输入角度在0和359之间,因此当我从0旋转-1度时,图像旋转一整圈并设置为359:

function setCompass(degrees){
    $("#compass").stop().transition({rotate: -1*degrees +'deg'});
}
我试图通过返回到-1而不是359来解决问题,因此我将代码更改为以下内容:

function setCompass(degrees){
    if (degrees>180){degrees=degrees-360}
    $("#compass").stop().transition({rotate: -1*degrees +'deg'});
}

它解决了0和360的滞后问题,但问题转移到了180。现在,当我将设备从180旋转到181时,它会旋转一个完整的负循环,返回到-179!请建议我如何修改计算,以便在每个角度上都能得到平滑的变化?

您可以使用一些模公式来确定是顺时针旋转还是逆时针旋转。使用jQuery的
data
方法保持当前角度(因此,如果需要,可以有多个这样的指南针),并允许作为CSS值传递的角度超出0-359范围

以下是它的工作原理:

功能设置指南针(度){
var curr=$(“指南针”)。数据(“旋转”)| | 0;
var next=电流+((度-电流)%360+180*3)%360-180;
$(“#指南针”).data(“旋转”,下一个).stop().transition({rotate:-next+'deg');
}
//在0到359之间随机生成角度的演示
setInterval(函数(){
setCompass(Math.floor(Math.random()*360));
}, 1000);


您应该将罗盘的当前度数/位置引入您的等式,并选择最短的路径(只需测量差值并选择samller,因此是-x或+x度数),希望这有助于您添加
jquery transit
标记?否则就不清楚
转换
方法从何而来了…感谢您的回答,感谢您对随机角度模拟的1次投票。