抱歉这个非常愚蠢的问题。 我正在慢慢地从头学习数学。
我想通过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));
然后我达到了这一点:
angleB = Math.cos(((C*C) + (A*A) - (B*B))/(2*C*A));
然而,我得到一个完全错误的号码。为什么会这样?
答案 0 :(得分:3)
您的代码在使用Math.cos
时会使用Math.acos
。
从law of cosines开始,我们得出了正确的公式:
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))