2013-06-21 164 views
2

对不起,我很愚蠢的问题。 我慢慢学习从头数学。用Javascript计算三角形的角度?

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

三角形有*三个*角度。你想要计算哪个? –

+0

你的代码的其余部分在哪里?你在寻找哪个'角度'? – shennan

+1

他在找角度B,也就是角度对面B. – Kevin

回答

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))