Контрольная работа по "Компьютерной графике"
Автор: Антон Чеботников • Июнь 9, 2021 • Контрольная работа • 1,292 Слов (6 Страниц) • 303 Просмотры
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КОНТРОЛЬНАЯ РАБОТА №1
по дисциплине «Компьютерная графика» (IХ семестр)
(вариант №14)
Выполнил:
(учебная группа )
Проверил:
г.Новосибирск
2021г.
ЗАДАНИЕ
В круг, занимающий весь экран, вписаны три круга. В каждый из вписанных кругов также вписаны три круга и т.д. Круги наполнены различными цветами. Разработать программу, делающую указанный рисунок.
Разработать рекурсивную версию решения данной задачи.
1. АНАЛИЗ ЗАДАЧИ
Иходными данными при решении данной задачи является высота экрана монитора пользователя. При этом количество пикселей по вертикали (высоту экрана) программа вычисляет сама. Так что пользователь сам ничего не вводит.
В результате выполнения данной программы на экране дисплея должен отобразиться рисунок, определенный заданием. Схематично его можно изобразить следующим образом:
[pic 1]
Рис.1.1. Схема рисунка
При этом необходимо предусмотреть возможность возникновения ошибок. Ошибки в программировании алгоритма решения задачи можно увидеть сразу – после вывода рисунка на дисплей. Однако остаются ошибки, возниконовение которых во многом зависит от той среды, в которой будет выполняться программа. Для их выявления в программу введем блок try-catch(…). В случае ошибки программа выдает сообщение:
Error!
Проведем подробный анализ решения поставленной задачи.
Как уже указывалось, необходимо разработать программу, с помощью которой можно получить на экране дисплея рисунок, изображенный на рис.1.1. При решении данной задачи необходимо решить небольшую задачу по геометрии: как вписать во внешний круг еще три непересекающихся круга максимального радиуса, при этом радиусы кругов одинаковы.
Изобразим чертеж решения данной задачи:
[pic 2]
Рис.1.2. Чертеж решения задачи
Для того, чтобы вписать подобные три круга, нам необходимо найти координаты их центров и радиус. Как видно из черетежа и поскольку радиусы всех трех кругов одинаковы, то длина отрезка BD будет равна искомому радиусу. Длина отрезка AC равна радиусу внешеного круга, который состоит из отрезков AB=BD и ВС. Угол CBD равен 30°. Отсюда получаем,
BC = BD/cos(30°);
AC=AB+BC=BD+ BD/cos(30°) = BD (1+ 1/cos(30°))=BD((cos(30°)+1)/ cos(30°));
BD= AC·cos(30°)/((cos(30°)+1);
Таким образом, мы нашли радиус вписанного круга.
Найдем координаты центров вписанных кругов. Для того на достаточно найти длины отрезков BC и CD. Найдем их:
BC = BD/cos(30°) = AC/((cos(30°)+1);
CD = BC/2.
Таким образом, мы можем вычислить центры вписанных кругов и их радиус.
2. АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ
Поскольку, согласно заданию, программа должна рекурсивно нарисовать данный рисунок, опишем неформально логику работы рукурсивной функции программы.
Рисование системы вложенных кругов будем производить следующим образом: нарисовать внешний большой круг, а затем передать координаты центра данного круга и его радиус в рекурсивную функцию. Данная функция после получения данных параметров определяет, можно ли в круг данного радиуса вписать еще три круга, т.е. не слишком ли мал данный внешний круг. Если это так, то функция завершает свою работу. Если же вписать еще три круга можно, то вычисляются координаты их центров и радиус, производится рисование после чего данная функция вызывается еще по одному разу для каждого из нарисованный ей до этого кругов. В итоге должен получится рисунок, схема которого изображена на рис.1.1.
...