Нарисовать равнобедренный треугольник - C#
Формулировка задачи:
Нарисовать 1 закрашенный равнобедренный треугольник, зная координаты только одной точки треугольника, а также длины сторон описанного прямоугольника (см. рисунок 2). Координаты x, y вводятся пользователем. высота 18, длина 74
Решение задачи: «Нарисовать равнобедренный треугольник»
textual
Листинг программы
void Field::draw_triangle(double height, double width, int x, int y) { //метод отрисовки треугольника //y = kx + b //k = height / width / 2; //b = y - kx //x = (y - b) / k double k = height / width * 2; //коэффициент наклона прямой (тангенс угла) double b = y - k * x; // это следует из общего линейного уравнения int i, j; //инкременты циклов, а также i - псевдо-x, а j - псевдо-y for (j = y; j < y + height; j++) { //по всей высоте i = (int) ((j - b) / k); //x = (y - b) / k //cout << "i = " << i << " j = " << j << endl; if(is_in_field(i, j)) //пока находимся в поле - отрисовываем field[i][j] = marker; } int right_corner_x = i; k = -k; //то же самое что и выше, просто знак коэффициента наклона меняется на обратный. b = y - k * x; for (j = y; j < y + height; j++) { i = (int) ((j - b) / k); if(is_in_field(i, j)) field[i][j] = marker; } int left_corner_x = i; //основание треугольника for (int i = left_corner_x, j = (int) (y + height - 1); i <= right_corner_x; ++i) { if(is_in_field(i, j)) field[i][j] = marker; } marker_increment(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д