graphics.h Рисование треугольника по заданным координатам

Для написания кода, описываемого в этой статье, требуется Borland C++ 3.1. Используется старая библиотека graphics.h, ныне не используемая. Она может использоваться в учебных целях в каких-нибудь учебных заведениях, но это было бы не очень хорошо. Современная графика — это такие библиотеки как OpenGl, DirectX и некоторые другие. В современных компиляторах graphics.h подключить не выйдет.
Рисовать треугольник можно двумя способами: тремя линиями и используя функцию рисования многугольников: drawpoly. Поскольку для построения треугольника нам требуется три точки, то нам необходимо задавать шесть значений: одна точка — это [x,y]. Перед тем, как нарисовать треугольник, мы должны дать понять компьютеру место его расположения на экране, т. е. задать значения трём точкам.

Поскольку на экране пиксели не могут представляться нецелыми числами, для задания значений здесь мы используем целые числа, т. е. целочисленный тип. Но если необходимо вычислять значения в ходе работы программы (например, для вращения фигуры требуется постоянное вычисление новых координат), то целочисленные типы не подходят. Здесь же нам всё, что осталось сделать — это соединить точки.

Соединили точки и выводим всё это дело на экран. Обычно, правда, графический режим подключают сразу. Я же его подключаю чуть позже в связи с тем, что так по моему мнению в коде становится видно самое основное. Конечно же нужно добавить и блок проверки ошибок, а то мало ли что.

Вместо того, чтоб самостоятельно отчерчивать каждую линию, можно довериться функции рисования многоугольников. Только нужно учитывать, что функция, рисующая контур многоугольника требует себе на одну точку больше, чем у рисуемого многоугольника. drawpoly не умеет самостоятельно замыкать контур, а это создает слегка неправильную видимость кода: рисуем треугольник, а функции нужно 4 точки, рисуем семугольник, функции нужно 8 и т. д.

Иногда лучше использовать функцию рисования многоугольников, а не соединять линии по отдельности. Напимер, если надо нарисовать семиугольник, то соединять все линии будет немного трудозатратно, количество кода станет больше, а кроме того, могут возникнуть проблемы с заливкой. Попробуем залить наш текущий треугольник. Да и даже сам факт, что будет использована одна функция вместо двух — это хорошо. (Было "нарисовать контур, закрасить область", а станет "Нарисовать закрашенную область". Для этого нужно использовать функцию заливки на точку внутри треугольника. Но начнём с двух функций: чтобы закрасить область, нам нужно попасть в любую точку закрашиваемой области:

Треугольник залился, но из-за того, что треугольник нарисован тремя соединёнными нами линиями могут возникать какие-нибудь проблемы. Поэтому для заливки имеет смысл использовать сразу рисование залитой фигуры с помощью функции fillpoly. Иногда куда попадает выбираемая нами координата можно подглядывать с помощью функции circle, рисующей окружность. Теперь нарисуем сразу залитый цветом треугольник:

Ну что ж. В моём случае эффект налицо: треугольник стал отрисовываться быстро, думать теперь, куда развёрнута фигура не надо, это удобно.
Обычно точки представляют как цельный объект, а не в виде двух значений, поэтому создадим структуру, представляющую точки как объекты.

Треугольник как фигура — это тоже целый объект, а не раздробленные кусочки целых значений, поэтому зайдём чуть дальше и сделаем треугольник объектом. Для этого создадим соответствующий класс:

Зальём треугольници цветами:

2 комментария на «“graphics.h Рисование треугольника по заданным координатам”»

  1. Люблю реализацию графики на плюсах. Спасибо, полезная статья =)

  2. Аноним:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/nikolay-poleschuk/programmirovanie-dlya-autocad-2013-2015/?lfrom=15589587
Яндекс.Метрика