【问题标题】:radians sometimes flipped/reversed弧度有时会翻转/反转
【发布时间】:2015-12-11 09:39:15
【问题描述】:

我有一个函数应该找到两个弧度的中间

function mrad(rb,ra){return (rb+ra)/2;}

但有时当我用 Math.sin 和 Math.cos 绘制 x 和 y 时,这两个指定长度的新坐标与我的意图相反。

例如;如果我预计新点会向下和向右,有时它们会出现在向上和向左。 除此之外坐标都是正确的!

这是我绘制新 x 和 y 的方法

xnew=xold-(100)*Math.cos(radian);
xnew=yold+(100)*Math.sin(radian);

我猜测弧度 B (rb) 是否大于 ra 可能很重要。我认为正在发生的事情是,在这种情况下,我会绕一圈,而有时我应该做类似的事情

 function mrad(rb,ra){return (rb-ra)/2;}

我的问题是

  1. 我的假设正确吗?

  2. 条件是什么,如何判断什么时候做rb-ra vs rb+ra,或者说得更好,你怎么判断如果一个弧度指向另一个上方或下方?

它应该看起来像这样

function mrad(rb,ra){return ((/*condition*/)?(rb-ra):(rb-ra))/2;}

编辑

为了找到范围,我尝试用不同的值来表示以弧度为单位的范围,但除了对角线之外找不到任何东西

http://jsfiddle.net/roLLqfs6/

此外,定义的长度并不总是 100,因为它在示例中写入

【问题讨论】:

  • 这是一道编程题吗?
  • err 是的,上面有代码^
  • 听起来像是一道数学题……
  • 我在侧边栏中看到很多弧度问题 > 另外我正在询问应用于函数中的 javascript 语句的条件。数学和编程都是问题的一部分,就像我在数学网站上发布的一样,他们会说这真的是数学还是编程?

标签: javascript radians


【解决方案1】:

这真的是一道数学题。您需要确保您的角度在同一范围内(-pi ... pi0 ... 2.0 * pi),但即便如此,取它们的平均值也不一定会找到您正在寻找的角度 - 您可能会期望(在度,为简单起见)您想要的 10º 和 20º 答案是 15º,但是您对 175º 和 -175º 的期望是什么?我怀疑你会想要 180º(因为这是它们之间的小弧线),但你会得到 0º。

因此,您需要测试差异,看看它们之间的距离是否小于 180º(pi 弧度),如果不是,则相应地修改答案。

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 2022-01-16
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多