好久没上高中了。如果我有一个直角三角形,并且知道角a,我想算出它对边的长度。c#食谱页面(http://www.gibmonks.com/c_sharp/csharpckbk2-CHP-1-SECT-14.html)建议:
oppositeSide = Math.Sin(θ) *斜边;
假设角A (θ)是45,斜边是10单位长,这段代码给我的结果是8.51。然而,至少有4个在线三角形求解器给我的答案是7.07(例如http://www.cleavebooks.co.uk/scol/calrtri.htm和http://www.endmemo.com/geometry/triangle.php)。这让我产生了严重的怀疑!
我没有足够的能力来判断哪个是准确的,但我可能更喜欢网络计算器。
谁能帮助正确的公式做到这一点,或指向一个有用的c#直角三角形求解类?谢谢
在文档中,theta
的值必须以弧度为单位。看起来你正在使用的在线解算器正在用度来解释theta
。
你可以从角度到弧度的转换如下:
theta = theta * Math.PI/180
您指定的角度以度为单位,但Math.Sin
方法使用弧度。
您可以使用theta * 2 * PI / 360
:
oppositeSide = Math.Sin(theta * 2.0 * Math.PI / 360.0) * hypotenuse;
顺便说一下,对于另一个角为45度的直角三角形,剩下的两条边长度相等,你也可以用这个公式计算它们的长度;
(a*a) + (b*b) = (c*c)
在这个例子中;
(a*a) * (a*a) = (10*10)
(a*a) * (a*a) = 100
(a*a) = 100 / 2
a = sqrt(50)
只是作为另一种方法来帮助您验证在这种特殊情况下的结果,并证明~7.07是正确答案。
sin45°= 0.707。你的计算有误。