Характеристика систем компьютерной графики. Особенности разработки алгоритмов и их реализация на персональном компьютере. Программа, реализующая трехмерное преобразование с тетраэдром с использованием алгоритмического языка программирования Паскаль.
В настоящее время в связи с широким внедрением персональных компьютеров во все сферы жизни, резкой интенсификацией процесса научных исследований, революционным совершенствованием его технологии, значительным повышением возможностей аппаратуры все больший интерес вызывают идеи, алгоритмы и средства компьютерной графики. Спектр использования компьютерной графики чрезвычайно широк: от создания рекламных роликов, компьютерных мультфильмов и игр, кроя одежды, компьютерной живописи до визуализации результатов научных изысканий и конструирования фактически нового инструментария в процессе получения знаний. Цель данной работы - более подробное рассмотрение систем компьютерной графики, а также углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Составить в MS Excel электронную таблицу любых статистических данных (число столбцов и строк <= 10) и построить диаграмму согласно вашему варианту. Диаграммы должны иметь наименование, легенду, подписи данных.В данном задании мы повторили основы работы в MS Excel, а также создали электронную таблицу со статистическими данными, построили на их основе заполненную лепестковую диаграмму, которая достаточно наглядно отобразила табличные значения продаж различных категорий товаров по месяцам. Для всех вариантов фигура должна отображаться в контурном виде без удаления невидимых линий и уметь вращаться вокруг произвольной оси Управление преобразованием по осям осуществлять с помощью девяти клавиш (...) на цифровой клавиатуре. Новые координаты должны быть рассчитаны таким образом, что бы изменение изображения фигуры на экране соответствовало необходимому действию, а именно - отражению относительно плоскостей. VAR VAR11, VAR12: Integer; {Переменные для работы в графическом режиме} vershina: array[1..4, 1..3] of real; {Iannea n eii?aeiaoaie aa?oei} pebpo: array[1..6, 1..2] of integer; {Iannea ?aaa?} j: integer; {Цикловая переменная} nazg: char; {Значение нажатой клавиши} For j:=1 To 6 Do Begin {?enoai 6 ?aaa?} perem1:=pebpo[j,1]; {Координата вершины, соединяемая j-м ребром} perem2:=pebpo[j,2]; {Координата вершины, соединяемая j-м ребром} x11:=round(vershina[perem1,1]) 320;Написать программу для изображения многогранника, вращающегося вокруг оси ОУ Ось вращения не должна совпадать с собственной вертикальной осью фигуры. Чтобы придать программе некую универсальность, реализуем в ней возможность вращения фигуры не только по оси OY, но и по осям OX и OZ. Кроме этого, все грани должны быть закрашены в разные цвета, а сама фигура изображаться в проекции перспектива (2 точки схода). Новые координаты должны быть рассчитаны таким образом, что бы изменение изображения фигуры на экране соответствовало необходимому действию, а именно - повороту по осям X, Y, Z. В ней ось y проецируется на ось OY экранной системы координат, а оси x и z составляют некий заданный угол ? с отрицательной полуосью OX и положительной полуосью OX соответственно.Программа служит примером реализации математического алгоритма над объемными фигурами, составленная программа демонстрирует преобразование над фигурой.В ходе выполнения заданий данной контрольной работы мы подробно рассмотрели системы компьютерной графики. Далее познакомились с различными трехмерными преобразованиями (изменение масштаба, смещение, вращение вокруг координатных осей, отображение относительно координатных плоскостей, пространственный перенос, трехмерное вращение вокруг произвольной оси), которые основываются на различных матричных операциях.Размещено на .ru
Введение
Цель работы
В настоящее время в связи с широким внедрением персональных компьютеров во все сферы жизни, резкой интенсификацией процесса научных исследований, революционным совершенствованием его технологии, значительным повышением возможностей аппаратуры все больший интерес вызывают идеи, алгоритмы и средства компьютерной графики. Спектр использования компьютерной графики чрезвычайно широк: от создания рекламных роликов, компьютерных мультфильмов и игр, кроя одежды, компьютерной живописи до визуализации результатов научных изысканий и конструирования фактически нового инструментария в процессе получения знаний.
Цель данной работы - более подробное рассмотрение систем компьютерной графики, а также углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере.
1. Деловая графика
1.1 Постановка задачи
Составить в MS Excel электронную таблицу любых статистических данных (число столбцов и строк <= 10) и построить диаграмму согласно вашему варианту. Диаграммы должны иметь наименование, легенду, подписи данных. Основной критерий оценки диаграммы - это правильное, наглядное и красивое отображение статистических данных.
Построить: 14.Заполненная лепестковая диаграмма.
1.2 Описание метода решения
Для построения объемно заполненной лепестковой диаграммы воспользуемся следующими данными.
Например, у нас есть уровень продаж различных товаров, распределенный по месяцам. По этим данным удобно будет построить лепестковую диаграмму.
Выполняем следующие действия: 1. Создаем электронную таблицу на основе имеющихся статистических данных.
1. По составленной таблице с помощью «мастера диаграмм» строим нужную диаграмму для наиболее наглядного представления.
2. Настраиваем диаграмму, чтобы добиться желаемого вида (добавляем подписи данных, названия осей, легенду, название гистограммы).
Вывод
Системы деловой графики предназначаются для графического изображения данных, хранимых в электронных таблицах или базах данных. Они позволяют наглядно отображать соотношение различных числовых показателей в удобной для восприятия форме.
В данном задании мы повторили основы работы в MS Excel, а также создали электронную таблицу со статистическими данными, построили на их основе заполненную лепестковую диаграмму, которая достаточно наглядно отобразила табличные значения продаж различных категорий товаров по месяцам.
2. Трехмерные преобразования
2.1 Постановка задачи
Составить программу, реализующую трехмерное преобразование с фигурой (см табл.). Для всех вариантов фигура должна отображаться в контурном виде без удаления невидимых линий и уметь вращаться вокруг произвольной оси Управление преобразованием по осям осуществлять с помощью девяти клавиш (...) на цифровой клавиатуре.
14ТетраэдрОтражение относительно плоскостей XOZ, YOZ, XOY.
2.2. Описание метода решения
Для начала как можно подробнее опишем задачу. Итак, необходимо написать программу, которая рисует на экране изображение тетраэдра. Во время выполнения программы необходимо обеспечить возможность изменять форму рисунка таким образом, чтобы создавалась иллюзия вращения или перемещения трехмерной фигуры. Способ изменения формы фигуры должен определяться нажатой клавишей: то есть при нажатии определенной клавиши должно выполняться соответствующее действие.
Для решения поставленной задачи был выбран алгоритмический язык программирования Паскаль. Один из его встроенных модулей, а именно модуль Graph, предоставляет богатые возможности для отображения графики на экране.
Основными действиями программы помимо отображения рисунка на экране, будут математические вычисления координат вершин фигуры в трехмерной системе координат.
Новые координаты должны быть рассчитаны таким образом, что бы изменение изображения фигуры на экране соответствовало необходимому действию, а именно - отражению относительно плоскостей.
Тетраэдр состоит из 4 вершин и 6 ребер.
Для реализации данной задачи нам необходимо создать массив с координатами вершин и массив ребер тетраэдра.
Для того чтобы повернуть тетраэдр необходимо умножить каждую вершину на матрицу поворота. После умножения каждой вершины на матрицу поворота, получается повернутый октаэдр в трехмерном пространстве.
Поворот вокруг оси x на угол ?:
IMG_49a66acb-4a20-4fe9-bcd9-4e5a42ae47e4
IMG_3f387090-95a6-4142-8857-e254edd9afb1
Поворот вокруг оси y на угол ?:
IMG_e50a4f87-8b3d-41ed-8b6a-71705602ae4c
IMG_70f93b56-17a5-4bdd-b00c-d360dd6b10a4
Поворот вокруг оси z на угол ?:
IMG_50e6816f-f08f-46b9-a8b2-a843c931949c
IMG_866c840e-37d5-4cbc-ab72-bd98cb896ae6
Отображение относительно плоскости XOY меняет лишь знак Z-координаты точек. Таким образом, Отображение относительно: XOY XOZ YOZ
IMG_92c2269e-b508-41f0-b2f1-8e87f468c67a
IMG_76ccadc3-f095-49e0-955d-2632ebe934bb
IMG_a8ca8e10-bbc3-4c9a-8dae-74b37116f3da
Для поворота фигуры октаэдра используются клавиши -, клавиши - - отражение относительно плоскостей XOZ, XOY, YOZ.
2.3 Листинг программы
PROGRAM tetra;
USES Crt, Graph;
VAR VAR11, VAR12: Integer; {Переменные для работы в графическом режиме} vershina: array[1..4, 1..3] of real; {Iannea n eii?aeiaoaie aa?oei} pebpo: array[1..6, 1..2] of integer; {Iannea ?aaa?} j: integer; {Цикловая переменная} nazg: char; {Значение нажатой клавиши}
{==============================}
PROCEDURE Vivod; {Auaia ia ye?ai}
VAR x11,x12,y11,y12: integer;
perem1,perem2: integer;
BEGIN
For j:=1 To 6 Do Begin {?enoai 6 ?aaa?} perem1:=pebpo[j,1]; {Координата вершины, соединяемая j-м ребром} perem2:=pebpo[j,2]; {Координата вершины, соединяемая j-м ребром} x11:=round(vershina[perem1,1]) 320;
y11:=240-round(vershina[perem1,2]);
x12:=round(vershina[perem2,1]) 320;
y12:=240-round(vershina[perem2,2]);
line(x11,y11,x12,y12); {Выводим очередное ребро}
End;
END;
{==============================}
PROCEDURE XOZ; {Отражение относительно плоскости XOZ}
BEGIN
For j:=1 To 4 Do Begin vershina[j,2]:=-vershina[j,2];
End;
END;
{==============================}
PROCEDURE XOY; {Отражение относительно плоскостей XOY}
BEGIN
For j:=1 To 4 Do Begin vershina[j,3]:=-vershina[j,3];
End;
END;
{==============================}
PROCEDURE YOZ; {Отражение относительно плоскостей YOZ}
BEGIN
For j:=1 To 4 Do Begin vershina[j,1]:=-vershina[j,1];
While nazg#27 Do Begin {Iiea ia ia?aoa eeaaeoa "Esc"}
CLEARDEVICE; {I?euaai ye?ai}
Vivod; {Auaiaei}
OUTTEXTXY(10,450,"Press - for rotation, - for reflection");
OUTTEXTXY(10,465,"Press to Exit");
nazg:=readkey; {Считываем значение нажатой клавиши}
Case nazg Of
"1": OX(pi/15); {Вращение вокруг оси OX}
"4": OX(-pi/15);
"2": OY(pi/15); {Вращение вокруг оси OY}
"5": OY(-pi/15);
"3": OZ(pi/15); {Вращение вокруг оси OZ}
"6": OZ(-pi/15);
"7": XOY; {Отражение относительно плоскости XOY}
"8": XOZ; {Отражение относительно плоскости XOZ}
"9": YOZ; {Отражение относительно плоскости YOZ}
End;
End;
CLOSEGRAPH; {Завершение работы в графическом режиме}
END.В процессе написания программы мы разобрали основные методы для решения задачи проекции трехмерного изображения на экран. Кроме этого научились преобразовывать созданное изображение таким образом, чтобы создавалась иллюзия перемещения и поворота. Для этого нам пришлось вспомнить основы вычислений матриц, а также освоить новые формулы, необходимые непосредственно для решения задач компьютерной графики.
3. Проекции
3.1 Постановка задачи
Написать программу для изображения многогранника, вращающегося вокруг оси ОУ Ось вращения не должна совпадать с собственной вертикальной осью фигуры.
14ОктаэдрПерспектива (2 точки схода)
3.2 Описание метода решения
Для начала как можно подробнее опишем задачу. Итак, необходимо написать программу, которая рисует на экране изображение октаэдра. Во время выполнения программы необходимо обеспечить возможность изменять форму рисунка таким образом, чтобы создавалась иллюзия вращения трехмерной фигуры. Способ изменения формы фигуры должен определяться нажатой клавишей: то есть при нажатии определенной клавиши должно выполняться соответствующее действие. Чтобы придать программе некую универсальность, реализуем в ней возможность вращения фигуры не только по оси OY, но и по осям OX и OZ. Отличием поставленной задачи от Задания 2 является требование непрозрачности фигуры, то есть надо будет создать алгоритм удаления невидимых в текущий момент граней. Кроме этого, все грани должны быть закрашены в разные цвета, а сама фигура изображаться в проекции перспектива (2 точки схода).
Для решения поставленной задачи был выбран алгоритмический язык программирования Паскаль. Один из его встроенных модулей, а именно модуль Graph, предоставляет богатые возможности для отображения графики на экране.
Основными действиями программы помимо отображения рисунка на экране, будут математические вычисления координат вершин фигуры в трехмерной системе координат.
Новые координаты должны быть рассчитаны таким образом, что бы изменение изображения фигуры на экране соответствовало необходимому действию, а именно - повороту по осям X, Y, Z.
Теперь разберем математические основы программы. Первое что необходимо вспомнить - это умножение матрицы на вектор. Этот процесс записывается так:
IMG_b2526ba2-77c1-4755-91f2-d8ca3c37073b
Теперь распишем саму формулу - она показывает принцип умножения матрицы на вектор:
IMG_2f9fdffa-40a9-420b-a317-225022ccdcc9
В программе координаты каждой вершины представлены вектором:
IMG_9bc3a8d0-9ed3-48c0-a4be-3e1c80387e44
Координаты по осям X, Y, Z равны соответствующим символам вектора, а значение W - это коэффициент перспективы. Для вычисления новых координат вершин фигуры нужно умножить вектор вершины на матрицу соответствующего преобразования.
Для вращения фигуры вокруг осей X, Y, Z необходимо векторы вершин умножать на соответствующие матрицы.
Для оси X это матрица
IMG_8978d6ce-79b5-4a34-84c4-f479bdb11a99
Для оси Y:
IMG_2e0c5fa6-d45f-4bc8-8d50-44cbc8a28076
Для оси Z:
IMG_8d884f46-a8a8-4cc4-a6a1-d5853e961f0e
Rx, Ry и Rz - соответственно значения углов вращения вокруг осей X, Y и Z. Результат умножения матрицы на вектор для вращения вокруг оси X будет таким: X’ = X, Y’ = Y*cos(Rx) Z*sin(Rx), Z’ = -Y*sin(Rx) Z*cos(Rx), где Rx - значение угла поворота вокруг оси X.
Для вращения относительно других осей значения вычисляются аналогично. Все эти формулы уже приводились в Задании 2. Но в этой программе нам поставлены дополнительные задачи, требующие математических вычислений: непрозрачность и диметрическая проекция. Для реализации непрозрачности был выбран следующий алгоритм: каждая грань фигуры описывается не только 3 вершинами, но и четвертой точкой - центром грани. Примем координаты центра грани, расположенной ближе всего к наблюдателю, как эталон. То есть вектор, проходящий из центра системы координат через это эталон, направлен прямо на наблюдателя. Теперь, при повороте фигуры мы можем вычислить скалярное произведение для каждого из векторов реальных центров граней и эталонного вектора. Если результат вычисления больше нуля, то грань находится на видимой части фигуры. Если результат вычисления равен нулю, то вектора перпендикулярны, а значит грань расположена боком к наблюдателю. Если результат вычисления меньше нуля, то грань находится на невидимой части фигуры. Скалярное произведение - одна из важнейших операций в аналитической геометрии (и в компьютерной графике). Скалярное произведение является числом и вычисляется следующим образом:
IMG_792d144a-a8c9-4520-86ff-0043da4579dd
Диметрическая проекция относится к числу ортогональных проекций. В ней ось y проецируется на ось OY экранной системы координат, а оси x и z составляют некий заданный угол ? с отрицательной полуосью OX и положительной полуосью OX соответственно.
Для отображения фигуры в диметрической проекции необходимо вектор каждой вершины умножить на матрицу преобразования, соответствующую диметрической проекции.
IMG_a34deaac-7263-4e5f-9917-66cd367716a9
Здесь a - угол, вычисляемый по формуле a = Sin(?) / Cos(?), где угол ? = ? * ?/180
Угол ? это угол, который составляют оси x и z с положительной и отрицательной полуосями OX экранной системы координат.
end.Программа служит примером реализации математического алгоритма над объемными фигурами, составленная программа демонстрирует преобразование над фигурой.компьютерный графика программа
В ходе выполнения заданий данной контрольной работы мы подробно рассмотрели системы компьютерной графики. При выполнении первого задания подробно изучили деловую графику. Она призвана решать сразу две важные задачи: во-первых, обеспечить быстрый вывод данных в наглядной графической форме, во-вторых, интенсифицировать процесс осмысления данных человеком с целью установления определенных закономерностей.
Далее познакомились с различными трехмерными преобразованиями (изменение масштаба, смещение, вращение вокруг координатных осей, отображение относительно координатных плоскостей, пространственный перенос, трехмерное вращение вокруг произвольной оси), которые основываются на различных матричных операциях. Также рассмотрели все виды плоских проекций и их применение. Все эти знания позволили представить реальные трехмерные объекты, на плоской поверхности отображения, кроме того, это помогло осуществить движение этих объектов. Таким образом, цель данной работы была полностью осуществлена.
IMG_99f4b34f-f915-467f-908e-e2df718e0378
IMG_c37cf504-00f0-442c-98b2-34ceec021862
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы