Задание № 1319

Студент

Пантелеев Евгений

Задача

Рисование окружностей

Состояние

Завершено

Баллов

4

Дедлайн
19 марта 2018
Назначено

12.03.2018, 07:37

Завершено

23.04.2018, 07:06

Реализовать рисование окружностей.

Входные данные

Текстовый файл, содержащий:

  • имя исходного BMP-файла
  • координаты центра окружности
  • радиус окружности
  • цвет линии в виде тройки чисел R, G, B
  • имя результирующего BMP-файла.

Пример файла:

kitty.bmp
100 120
380 160
255 10 10
kitty_circle.bmp

Файл может содержать пустые и невалидные строки. Программа должна корректно это обрабатывать.

Задача

Реализовать рисование окружностей, используя алгоритм Брезенхэма.

Необходимо корректно обрабатывать ситуации с пересечением окружностью границ изображения.

Необходимо корректно обрабатывать ситуации с некорректно заданными цветами (приведение в диапазон 0 .. 255, 0 - значение по умолчанию).

Для работы с форматом BMP можно использовать одну из header-only библиотек.

Выходные данные

BMP-файл, содержащий исходное изображение с нарисованной поверх него окружностью.

Тестирование

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

Функции ввода/вывода нужно тестировать с помощью std::stringstream. Тестировать работу с изображениями нужно путем самостоятельной генерации изображений, без использования файлов.

Примечания

Пожелания студенту: 1. освоить C++ классы в OpenVC наконец 2. научится рисовать точки не как окружности нулевого радиуса

а так всё неплохо.

Действия