Нарисовать равнобедренный треугольник - 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();
}

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


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

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

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