Нарисовать равнобедренный треугольник - 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();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д