你能在JavaScript中找到Mod 2Pi吗?
编辑:我使用Math.atan2()有一个角度,然后我想从中添加或减去值。然而,这种加减法有时意味着角度大于π或小于-π,我正在寻找一种方法,使其中一个外角回到正确的范围 我试图使用以下代码在JavaScipt中找到mod 2pi值:你能在JavaScript中找到Mod 2Pi吗?,javascript,Javascript,编辑:我使用Math.atan2()有一个角度,然后我想从中添加或减去值。然而,这种加减法有时意味着角度大于π或小于-π,我正在寻找一种方法,使其中一个外角回到正确的范围 我试图使用以下代码在JavaScipt中找到mod 2pi值: foo % Math.PI * 2; 但是,它总是返回foo,即使我尝试以下操作: var bar = Math.PI * 2; foo % bar; 有人能解释一下为什么这不起作用吗 DLiKS您没有进行作业: foo = foo % Math.PI * 2
foo % Math.PI * 2;
但是,它总是返回foo,即使我尝试以下操作:
var bar = Math.PI * 2;
foo % bar;
有人能解释一下为什么这不起作用吗
DLiKS您没有进行作业:
foo = foo % Math.PI * 2;
或:
编辑:
为了解释更新后的问题,您有一个值foo,可以是任何角度,但是您希望foo在[-pi,pi]范围内。您需要按程序执行此操作:
foo %= 2 * Math.PI; // Now in the range [-2pi,2pi]
if (Math.abs(foo) > Math.PI) {
foo -= 2 * Math.PI * Math.sign(foo);
}
类型。数学。圆周率是双精度的。任何(整数%Double)都将返回整数端 尝试:
var bar=parseInt(Math.PI*2*10000);
文件。书写(bar/10000+“
”;
var foo=60000;
foo%=巴;
文件。写(foo/10000+“
”;
即使我做了一个作业,它仍然不起作用。我仍然得到相同的值。您将不得不显示更多代码。这里使用的两个例子:哦,对不起,我应该重新表述我的问题。如果foo mod 2pi小于2pi(返回一个负值),有没有办法得到foo mod 2pi?如果foo小于2pi,返回的值将是foo。这就是mod的工作原理。只有当foo小于0.pi%2*pi不是-pi时,才会得到负值。它是圆周率。模定义为除法后的余数。如果你用π除以2pi,结果是0和π的余数。这个余数是模结果。你想解决什么问题?也许我们可以帮你找到你真正想要的。添加了问题的上下文,很抱歉我问它的方式很糟糕。JS没有Ints的概念。基本数字类型为IEEE 754双精度。
foo %= 2 * Math.PI; // Now in the range [-2pi,2pi]
if (Math.abs(foo) > Math.PI) {
foo -= 2 * Math.PI * Math.sign(foo);
}
<script type="text/javascript">
var bar = parseInt(Math.PI * 2 * 10000);
document.write(bar / 10000 + "<br/>");
var foo = 60000;
foo %= bar;
document.write(foo / 10000 + "<br />");
</script>