Компьютерная графика фкн , вопросы , требования задачи.

Требования к практическим занятиям по «Компьютерной графике» 1
Задачи курса «Компьютерная графика» 1
Спиcок вопросов по компьютерной графике для студентов, не сдавших промежуточный отчет. Студенту, не отчитавшемуся в промежуточный отчет, но сдавшему все задачи по машинной графике выдается любой вопрос из списка соответствующего отчета. 5

Требования к практическим занятиям по
«Компьютерной графике»
Настоящие требования могут быть изменены или дополнены преподавателями на протяжении всего курса.

В течении всего семестра студент обязан сделать шесть заданий. Студент, не сделавший нужное число заданий к зачету не допускается.
За каждое задание выставляется оценка по 100 бальной шкале. За отчет в промежуточной аттестации выставляется средний бал из полученных в течении месяца. Если к месячному отчету не сдано необходимое количество заданий на оценку более 30 баллов, то студент к отчету автоматически не допускается (оценка 0 баллов). При сдаче задачи не в срок оценка снижается на 30-40 баллов.
Студентам, сдавшим вовремя промежуточные аттестации на оценку более 30 баллов, в конце семестра выставляется зачет автоматом. Остальным выдается любой вопрос из списка (см. ниже).
Задачи курса «Компьютерная графика»
Оценки за задачи выставляются в соответствии с требованиями к практическим занятиям и указанными оценками. Оценка может быть скорректирована в соответствии с знаниями студента и по усмотрению преподавателя.

Задание 1. 1 занятие. (1 новый примитив - 10 баллов, повторение примитива – 3 балла).
1. Построить рисунок, используя все примитивы канвы (Canvas). Рисунок должен содержать 3-4 строки надписей, использовать различные цвета линий и кисти, различные шаблоны кисти. Темы рисунков: человек, велосипед, автомобиль, компьютер, интерьер комнаты, чертеж детали, дом, план квартала, стол, самолет или что-либо другое.

Задание 2. 2 занятия. (линий – не более 55 баллов, + дуги окружности – не более 80 баллов, + дуги эллипса – до 100 баллов)
2. С помощью свойства Canvas.Pixels[x,y] написать процедуры рисования линии методом аппроксимации Брезенхема линий и дуги окружности или эллипса.

Задание 3. 2 занятия. (плоский вид диаграммы – не более 65 баллов, объемный – до 100 баллов)
3. Функция f(x,y) задана в узловых точках (xi=x0+i*h1, yj=y0+j*h2), i=0,1,...,n, j=0,1,...,m. Построить один из видов объемной диаграммы функции (см. компонент PChart).

Задание 4. 3 занятия. (до 100 баллов)
1. Разработать формат текстового файла для записи команд построения примитивов с помощью процедур модуля Graphics. Написать программу читающую такие файлы.
2. Написать процедуру построения многоугольника со скруглениями радиуса R.
3. Написать программу изображения трехмерных тел с двухточечным проецированием.
4. Написать процедуру пересечения двух произвольных треугольников, заданных в трехмерном пространстве.
5. Написать программу изображения стеклянной бутылки с учетом коэффициента преломления и коэффициентов диффузии и отражения.
6. Написать программу построения тени от произвольного тела, заданного плоскими гранями.
7. Написать программу построения 2D-графика функции, заданной параметрически.
8. Написать программу динамического изменения 2D-графика функции.
9. Написать программу динамического поворота 3D-графика функции.
10. Написать процедуру, выводящую строку векторных символов с коэффициентом увеличения под любым углом.
11. Построить на экране изображения платоновых тел: тетраэдра, куба, октаэдра, икосаэдра, додекаэдра.
12. Написать процедуру построения точки пересечения двух произвольных отрезков.
13. Написать процедуру постепенного превращения одной кривой, заданной набором точек, в другую кривую, заданную другим набором точек.
14. Написать программу, вращающую два платоновых тела вокруг общего центра.
15. Написать программу освещения 3D-поверхности двумя источниками света.

Задание 5. 3 занятия. (до 55 баллов – простой сценарий, до 80 баллов – нет управления клавиатурой, до 100 баллов – различный сценарий и есть управление клавиатурой)
1. Написать программу «Солнечная система»
2. Написать программу перемещения изображения по экрану с отражением от стенок.
3. Написать программу управления перемещением рисованного объекта клавиатурой.
4. Написать программу одновременного управления перемещением двух рисованных объектов клавиатурой.
5. Написать программу-мультфильм «Восход солнца»
6. Написать программу-мультфильм «Едущий велосипед»
7. Написать программу-мультфильм «Превращение стола в стул»
8. Написать программу-мультфильм «Открывающаяся дверь»
9. Написать программу-мультфильм «Упругий мяч с деформацией»
10. Написать программу, постепенно рисующую график функции и надписи
11. Написать программу-мультфильм «Колеса паравоза»
12. Написать программу «Полет сквозь звезды»
13. Разработать формат файла для записи векторных шрифтов и программу, редактирующую любой символ и записывающую данные в файл.
14. Написать программу для бинарных операций над трехмерными телами.
15. Написать программу построения пересечения платоновых тел произвольной плоскостью.
16. Написать программу триангуляции Дьедоне по произвольному набору точек.
17. Написать программу построения трехмерного тела с цилиндрическими и конусными поверхностями по трем (двум) проекциям.

Задание 6. 4 занятия. (до 100 баллов. Задания могут быть изменены преподавателем)
1. Построить график функции, заданной параметрическими уравнениями. При выполнении этого проекта предполагается развитый интерфейс, позволяющий изменять масштаб, сдвигать окно на бумаге, менять цвета фона и линий. Также должна быть предусмотрена возможность выводить координаты курсора мыши и параметра t при нажатии на правую кнопку.
2. Создать проект, в котором моделируется траектории движения снаряда при разных начальных углах и скоростях выстрела, возможно, с нелинейностью (сопротивление пропорционально квадрату скорости с некоторым коэффициентом). Траектория движения определяется из задачи Коши для системы обыкновенных дифференциальных уравнений (уравнения движения материальной точки в поле тяжести ). Интерфейс проекта должен позволять менять начальный угол траектории, начальную скорость полета, позволять выбирать модель полета и параметры модели.
3. Создать инструмент для рисования поверхностей второго порядка. Проект должен позволять выбирать в трехмерном пространстве параллелепипед просмотра, перемещать и поворачивать его, изменять масштаб. Поверхность второго порядка может быть выбрана из полного списка таких поверхностей с возможность поворота, смещения и растягивания по любой оси, или поверхность может быть задана уравнением второго порядка.
4. Создать инструмент для рисования линий уровня. Этот проект должен позволять вводить функцию двух переменных либо в аналитическом виде, либо в табличном - значениями в узловых точках. Если функция вводится в аналитическом виде, то вам понадобится интерпретатор, на худой конец можно менять исходный текст и перетранслировать его. В случае табличного задания функции придётся применять подходящую двумерную интерполяцию. Должна быть предусмотрена возможность изменять прямоугольник проектирования и число линий уровня. Рекомендуется кроме линий применить подкраску: определённому промежутку изменения значений функции поставить в соответствие некоторый цвет и этим цветом закрасить область между линиями уровня, так, как это делают на топографических картах (чем ниже - тем зеленее, чем выше - тем коричневее).
5. Создать инструмент для вращения многогранников. В проекте необходимо предусмотреть возможность ввода вектора вращения и угловой скорости.
6. Создать инструмент для показа вращения платоновых тел. Для этого проекта необходимо создать свой компонент, определяющий платоновы тела. Проект должен позволять выбирать одно и несколько платоновых тел и для каждого задавать пространственное положение, вектор вращения и угловую скорость. После выбора этих параметров в режиме просмотра тела должны вращаться.
7. Разработать векторный шрифт и инструмент для него. Проект предусматривает разработку формата файла для сохранения символов векторного шрифта и создание инструмента для ввода и редактирования символов мышью.
8. Создать инструмент для плавного превращение одной кривой в другую, изоморфную первой (морфинг). Проект предусматривает ввод двух одинаковых по числу множеств точек на плоскости. На каждое множество точек натягивается гладкая линия, которая может быть замкнута. В режиме просмотра одна линия должна плавно переходить в другую.
9. Создать инструмент для пересечение многогранника с плоскостью. В этом проекте необходимо добавить возможность ввода плоскости. Результатом работы этого проекта должен быть новый многогранник, полученный в результате пересечения исходного многогранника с плоскостью.
10. Создать инструмент для удаление невидимых рёбер. Проекту необходимо добавить возможность удаления невидимых ребер. В проекте должна быть реализована возможность выбора одного из алгоритмов: алгоритма Сазерленда-Кохана для отсечения отрезка, алгоритма Робертса для удаления невидимых линий, алгоритма Аппеля для удаления невидимых линий
11. Создать инструмент для вращение многогранника с перспективой. Проекту необходимо добавить возможность выбора вектора вращения, угловой скорости, типа и параметров перспективы.
12. Разработать проект для оптимального раскроя материала. Проект должен поддерживать возможность создания и редактирования двухмерных деталей, инструментарий для расстановки этих деталей по заготовке. Проект должен часть оптимизационной работы выполнять автоматически.
13. Визуальный инструмент для работы с семантическими сетями. Кроме стандартного набора функций (добавить/изменить/удалить узел/дугу) проект должен позволять мышью перемещать узлы и дуги, а также должен позволять настраивать цвета и внешний вид графа. Предполагается, что дуга изображается трехзвенной ломаной с линиями, параллельными осям координат.
14. График любой функции одной переменной (интерпретатор). Проект должен позволять выбирать на плоскости прямоугольник просмотра, перемещать его, изменять масштаб. Уравнение функции задается аналитическим выражением.
15. Тренажер для управляемых ракет. Проект представляет собой игровую программу, в которой по движущейся цели производится выстрел управляемой ракетой. Ракета движется с постоянной скоростью в поле тяжести, а её управление реализуется во вертикали и горизонтали. Ракета видна из вашей "пусковой установки".
16. Сплайны 2-го порядка. Функция двух переменных задается своими значениями в узлах прямоугольной сетки. Проект должен позволять вводить мышью и клавишами значение функции в узлах, а затем решать задачу интерполяции двухмерными сплайнами.
17. Программа для работы со сплайнами: кубические сплайны, кривые Безье, В-сплайны, beta-сплайны. В этой программе должен быть предусмотрен ввод, редактирование и удаление точек, а также выбор одного из методов.
18. Триангуляция плоских фигур. Программа должна позволять вводить плоскую многосвязную фигуру, ограниченную прямыми линиями или сплайнами, а затем проводить разбиение этой области на треугольники. После автоматического разбиения должна быть предоставлена возможность просмотра с масштабированием и ручного редактирования триангуляции.
19. Создать программу разработки проекта газификации домов. Проект должен поддерживать возможность создания и редактирования двухмерного плана дома и газовой трассы, создания и редактирования элементов газового оборудования, инструментарий для расстановки этих элементов по плану дома и газовой трассы.
20. Создать программу разработки проекта трехмерных локальных вычислительных сетей (ЛВС). Проект должен поддерживать возможность создания и редактирования трехмерного плана здания, создание и редактирования элементов ЛВС, инструментарий для расстановки этих элементов по плану здания.
21. Создать программу разработки многослойной карты города. Этот проект должен давать возможность создавать и редактировать слой карты города. Необходимо поддерживать библиотеку условных обозначений и элементов. В проекте должны быть реализованы функции масштабирования, рисования и удаления примитивов и элементов.
22. Создать программу разработки эскизов декораций. Эта программа должна создавать изображение из нескольких картинок. Каждая картинка может быть перемещена, у неё могут быть изменены размеры и один из цветов назначен прозрачным. Должны работать эффекты затемнения и освещения прожекторами разных цветов.
23. Разработать программу, в которой можно вырезать "ножницами" фрагмент одного изображения и поместить вырезанный фрагмент в другое изображение. В качестве основы можно взять графический редактор, описанный в главе 7, и добавить вырезание "ножницами" в этот проект.
24. Создать проект для рисования эскиза расстановки мебели. Проект должен поддерживать возможность создания и редактирования трехмерного плана квартиры, создание и редактирования эскиза мебели, а также инструментарий для расстановки мебели по квартире.
25. Разработать проект для рисования фракталов.
26. Создать программу, моделирующую алгоритм Брезенхема для рисования отрезка и демонстрирующий работу этого алгоритма в увеличенном виде на экран.
27. Удаление невидимых граней. За основу этого проекта также можно взять пример, рассмотренный в 10 главе, позволяющий редактировать многогранники. В модифицированном проекте необходимо добавить возможность удаления невидимых граней при выводе трехмерного изображения.
28. Программа макетирования визитных карточек. Проект должен поддерживать возможность создания и редактирования макета визитных карточек: менять текст и расположение надписей, подключать картинки и фотографии, выводить подготовленный макет на печать.

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

1 отчет:

1. Компоненты и методы рисования в Delphi
2. Примитивы Canvas
3. Свойства и методы Pen
4. Свойства и методы Brush
5. Свойства и методы Font
6. Цвет. Представление цвета в 16-ричном виде
7. Алгоритм аппроксимации отрезка методом Брезенхейма
8. Алгоритм заливки области.
9. Вектор. Смысловое значение
10. Скалярное произведение векторов
11. Задание прямой на плоскости, проходящей через две точки
12. Уравнение эллипса (окружности)

2 отчет:

1. Преобразование системы координат
2. Масштабирование
3. Ортогональные проекции. Свойства, матрицы преобразования
4. Ортогональные проекции. Свойства, матрицы преобразования
5. Освещение. Моделирование цвета с учетом освещения.
6. Матрицы поворота тела относительно осей координат
7. Матрицы сжатия и растяжения
8. Задание прямой в пространстве, проходящей через две точки
9. Задание отрезка в пространстве
10. Векторное произведение
11. Задание плоскости, проходящей через три точки
12. Критерий определения лежит ли точка на плоскости

3 отчет:

1. Методы задания трехмерного тела в программе (структура и ее назначение)
2. Построение тела с учетом освещения
3. Построение тела с учетом перспективы
4. Построение тела с учетом освещения
5. Рисование полутонами
6. Интерполяция функций сплайнами
7. Интерполяция функций методом наименьших квадратов
8. Интерполяционный многочлен Лагранжа
9. Кривые Безье
10. Критерий определения лежат ли три точки на одной прямой
11. Пересечение отрезков в пространстве (только формулы и условия)
12. Пересечение треугольников в пространстве (только формулы и условия)