我有一个应该找到两个弧度中间的函数
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;}
我的问题是
我的假设是否正确?
条件是什么,怎么知道何时做 rb-ra vs rb + ra ,或者说更好,你怎么说如果一个弧度指向另一个弧度或低于另一个?
看起来应该是这样的
function mrad(rb,ra){return ((/*condition*/)?(rb-ra):(rb-ra))/2;}
修改
要查找范围,我试图表达不同的值以找到弧度范围,但找不到任何超过对角线的范围
定义的长度也不总是100,因为它在示例
中写入答案 0 :(得分:0)
这真的是一个数学问题。你需要确保你的角度在同一范围内(-pi ... pi
或0 ... 2.0 * pi
),但即使这样,取其平均值也不一定能找到你想要的角度 - 你可能期望(以度为单位,为简单起见)你想要的10º& 20º是15º,但你对175º和-175º的期望是什么?我怀疑你会想要180º(因为这是它们之间的小弧度),但你会得到0º。
所以,你需要测试差异,看看它们相差小于180º(pi弧度),如果不是,则相应地修改答案。