sty*_*yke 3 javascript math trigonometry
抱歉问了这个非常愚蠢的问题。我正在从头开始慢慢学习数学。
我想通过javascript计算三角形的角度。
我计算边长,
Ab = Math.abs(b.x - c.x);
Ac = Math.abs(b.y - c.y);
A = Math.sqrt((Ab*Ab) + (Ac*Ac));
Bb = Math.abs(a.x - c.x);
Bc = Math.abs(a.y - c.y);
B = Math.sqrt((Bb*Bb) + (Bc*Bc));
Cb = Math.abs(a.x - b.x);
Cc = Math.abs(a.y - b.y);
C = Math.sqrt((Cb*Cb) + (Cc*Cc));
Run Code Online (Sandbox Code Playgroud)
然后我谈到这一点:
angleB = Math.cos(((C*C) + (A*A) - (B*B))/(2*C*A));
Run Code Online (Sandbox Code Playgroud)
然而,我得到了一个完全错误的号码。为什么会这样呢?
您的代码Math.cos
在应该使用时使用Math.acos
.
从余弦定理开始,我们推导出正确的公式:
b*b = a*a + c*c - 2*a*c*cos(angleB)
b*b - a*a - c*c = - 2*a*c*cos(angleB)
2*a*c*cos(angleB) = a*a + c*c - b*b
cos(angleB) = (a*a + c*c - b*b) / (2*a*c)
angleB = acos((a*a + c*c - b*b) / (2*a*c))
Run Code Online (Sandbox Code Playgroud)