画一个有 3 条边的三角形

Wit*_*ien 1 c# math winforms

我想画一个只有3条边长的三角形。(在 C# Winform 中)

示例:S1(3)、S2(4)、S3(5),其中 SN(x) 作为每条边的长度。

我尝试这样做,结果不是直角三角形,但看起来像它。
对于第一面,我只是将其画成一条线。在我尝试用毕达哥拉斯找到角度之后,第二个角度也一样,但我意识到,如果我输入 (5,4,3) ,那就是别的东西了。我只是想了解如何找到一个坐标只有边长的三角形。

  Point a = new Point(0, 0);
  Point b = new Point(s1, 0);

  double y = (Math.Pow(s1, 2) + Math.Pow(s3, 2) - Math.Pow(s2, 2)) / (2 * s1);
  double x = Math.Sqrt(Math.Pow(s3, 2) - Math.Pow(y, 2));

  Point c = new Point((int)x, (int)y);
  e.Graphics.DrawLine(Pens.Black, a, b);
  e.Graphics.DrawLine(Pens.Black, b, c);
  e.Graphics.DrawLine(Pens.Black, c, a);
Run Code Online (Sandbox Code Playgroud)

这就是结果:

结果

有人能帮我吗?因为我想我不明白我该怎么做。

Dr.*_*ann 5

这更多的是一个数学问题。在 A 点,有边 s1、s3 和相对边 s2。然后余弦公式给出

2*s1*s3*cos(alpha) = s1^2+s3^2-s2^2.
Run Code Online (Sandbox Code Playgroud)

现在余弦是角度到水平轴的投影,所以你应该有

x = s3*cos(alpha) = (s1^2+s3^2-s2^2)/(2*s1)
Run Code Online (Sandbox Code Playgroud)

并相应地

y = sqrt(s3^2-x^2).
Run Code Online (Sandbox Code Playgroud)

对于测试边长 3、4、5,这将给出

x = (3^2 + (5^2-4^2))/(2*3) = 3
y = sqrt(5^2-3^2) = 4
Run Code Online (Sandbox Code Playgroud)

生成直角三角形的点。