c#中的直角三角形计算



好久没上高中了。如果我有一个直角三角形,并且知道角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。你的计算有误。

最新更新