Нарисуйте треугольник с 3 сторонами - PullRequest
0 голосов
/ 31 марта 2020

Я хочу нарисовать треугольник только с 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);

Вот результат:

Result

Может кто-нибудь помочь мне? потому что я думаю, что я не понимаю, как я могу это сделать.

1 Ответ

4 голосов
/ 31 марта 2020

Это больше математическая задача. В точке А есть стороны 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

с получением точек для прямоугольного angular треугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...