Не могу рассчитать угол - C#

Узнай цену своей работы

Формулировка задачи:

Нужно построить равнобедренную трапецию с указанным углом при основании
            double angle = Convert.ToDouble(textBox1.Text) * Math.PI / 180; // узнаем угол и переводим его в радианы
 
            // pStart - левая верхняя вершина
            // pEnd - правая нижняя вершина
 
            h = Math.Abs(pEnd.Y - pStart.Y); // находим высоту
            b = a = h / Math.Sin(angle); // находим боковые стороны трапеции
            
            raznica = Math.Sqrt(a * a - h * h);// = (большее основание-меньшее основание) / 2
            
            nl = pStart.X - 2*raznica; // координата по Х Нижней Левой вершины трапеции
            vp = pEnd.X - 2*raznica; // координата по Х Верхней Правой вершины трапеции
            
            Point point1 = new Point((int)vp, pStart.Y); // координата Нижней Левой вершины трапеции
            Point point2 = new Point((int)nl, pEnd.Y); // координата Верхней Правой вершины трапеции
            if (point1.X > pStart.X)
            {
                Point[] points = new Point[4] { pStart, point2, pEnd, point1 };
                g.DrawPolygon(pen1, points);
            }
Проблема вот в чем: неверно считается угол (вроде как формула верная), т.е. если я ввожу угол 45°, углы при основании трапеции получаются ~60°, 20° ~ 13°, однако 90° строит верно

Решение задачи: «Не могу рассчитать угол»

textual
Листинг программы
double angle = Convert.ToDouble(textBox1.Text) * Math.PI / 180; // узнаем угол и переводим его в радианы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы