Нарисовать равнобедренный треугольник - C#

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

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

Нарисовать 1 закрашенный равнобедренный треугольник, зная координаты только одной точки треугольника, а также длины сторон описанного прямоугольника (см. рисунок 2). Координаты x, y вводятся пользователем. высота 18, длина 74

Решение задачи: «Нарисовать равнобедренный треугольник»

textual
Листинг программы
  1. void Field::draw_triangle(double height, double width, int x, int y) { //метод отрисовки треугольника
  2.     //y = kx + b
  3.     //k = height / width / 2;
  4.     //b = y - kx
  5.     //x = (y - b) / k
  6.  
  7.     double k = height / width * 2; //коэффициент наклона прямой (тангенс угла)
  8.     double b = y - k * x; // это следует из общего линейного уравнения
  9.     int i, j; //инкременты циклов, а также i - псевдо-x, а j - псевдо-y
  10.     for (j = y; j < y + height; j++) { //по всей высоте
  11.         i = (int) ((j - b) / k); //x = (y - b) / k
  12.         //cout << "i = " << i << " j = " << j << endl;
  13.         if(is_in_field(i, j)) //пока находимся в поле - отрисовываем
  14.             field[i][j] = marker;
  15.     }
  16.     int right_corner_x = i;
  17.     k = -k; //то же самое что и выше, просто знак коэффициента наклона меняется на обратный.
  18.     b = y - k * x;
  19.     for (j = y; j < y + height; j++) {
  20.         i = (int) ((j - b) / k);
  21.         if(is_in_field(i, j))
  22.             field[i][j] = marker;
  23.     }
  24.     int left_corner_x = i; //основание треугольника
  25.     for (int i = left_corner_x, j = (int) (y + height - 1); i <= right_corner_x; ++i) {
  26.         if(is_in_field(i, j))
  27.             field[i][j] = marker;
  28.     }
  29.     marker_increment();
  30. }

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы