2

对不起这个非常愚蠢的问题。我正在从零开始慢慢学习数学。

我想通过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));

但是,我得到一个完全错误的号码。为什么会这样?

4

1 回答 1

4

您的代码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))
于 2013-06-21T14:41:34.360 回答