【问题标题】:Draw a triangle with 3 sides given画一个有 3 条边的三角形
【发布时间】:2020-07-11 19:29:51
【问题描述】:

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

示例: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);

结果如下:

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

【问题讨论】:

  • @Lutz Lehmann 不,因为这是一种礼节,谢谢编辑
  • 你可以计算两个圆在点ab上的交点,半径分别为s(4)和s(5)

标签: c# winforms math


【解决方案1】:

这更像是一道数学题。在 A 点,你有边 s1、s3 和对边 s2。然后余弦公式给出

2*s1*s3*cos(alpha) = s1^2+s3^2-s2^2.

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

x = s3*cos(alpha) = (s1^2+s3^2-s2^2)/(2*s1)

相应地

y = sqrt(s3^2-x^2).

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

x = (3^2 + (5^2-4^2))/(2*3) = 3
y = sqrt(5^2-3^2) = 4

生成矩形三角形的点。

【讨论】:

  • 这里没有专门针对矩形三角形的,我只是更正了您问题中 x 和 y 的顺序。
  • 如何应用这些要点?我有同样的问题,但我不明白相关性也许你可以帮忙。
  • 以什么方式申请?什么相关性?边和边长的命名?
  • 不知道怎么求三边的坐标。我也有 3 个边,我必须画出这个三角形。
  • 问题中的过程以及上述校正会为三角形的所有 3 个点生成坐标。您可能想要旋转和平移结果。
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多