Начало: 20 апреля 2001 года.
Конец: 4 мая 2001 года.
Цель задания.
Научиться работать с поверхностями Безье в трехмерном пространстве: выводить и манипулировать (создание интерактивной программы) ими с использованием OpenGL.
Описание задания.
Введение.
Поверхности Безье - это один из способов визуализации гладких поверхностей.
Рис.1. Поверхность Безье.
Если у нас есть совокупность точек (прямоугольная сетка) в пространстве, то можно построить гладкую поверхность, которая будет "повторять" многогранную поверхность (Рис.1.)
Рис.2. Зеленые точки - это контрольные точки, по которым строится поверхность. Желтые линии их соединяют. Сетка белого цвета - это аппроксимирующая сетка поверхности Безье.
Обязательная часть:
-
Нужно создать одну поверхность Безье, заданную как минимум 16-ю контрольными точками, используя функции из библиотеки GL (glMap2[fd], glMapGrid2[fd], glEvalMesh2). За сложность и оригинальность поверхности будут добавляться баллы. За неинтересную поверхность быллы могут вычитаться. Источник света присутствует.
Для лучшего понимания, можно изучить программу, использующую поверхности Безье.
-
Реализовать возможность передвижения (вращения) поверхности для того, чтобы можно было изучить ее со всех сторон. Два способа реализации:
-
интерактивный (используя мышку)
-
перемещение зависит от положения мышки (например, вражение вокруг моментальной оси). Не допускается использование возможностей трехкнопочной мышки.
В этом случае можно воспользоваться модулем trackball (исходники trackball.c trackball.h), самостоятельно изучив его. Он позволяет интуитивно-понятно управлять вращением объекта.
Еще один из возможных способов реализации - это использование специальной панели.
Рис.3. Пример панели управления.
Если кликать мышкой на левую/правую половину панели, то перемещение (вращение) происходит в положительную/отрицательную сторону. Чем дальше от центра тем быстрее.
-
неинтерактивный - перемещение и вращение по заранее заданным траекториям
-
Не требуется вмешательства пользователя. При этом объект должен хорошо просматриваться со всех сторон!
-
Дополнительная часть:
Оценка:
- Простейший вариант программы без интерактивного манипулирования : 5 баллов
- Простейший вариант программы c интерактивным манипулированием : 7 баллов (+ дополнительные баллы за удобство)
- Перемещение опорных точек : +5 балла
- Считывание из файла : +3 балла
- Реализация NURBS : +3 балла
Дополнительные баллы можно получить за необычные решения, эстетичность и т.п.
Дополнительные источники информации:
-
Описание возможностей OpenGL по построению поверхностей Безье и NURBS.
-
Описание библиотек GL и GLU.
-
David F.Rogers, J. Alan Adams, "Mathematical elements for computer graphics", McGraw-Hill, pp. 207-375, 1990.
Книжка в этом году была издана на русском языке. Если вы желаете ее приобрести, обращайтесь в Лабораторию Компьютерной Графики.
-
Шикин Е.В., Плис А.И., "Кривые и поверхности на экране компьютера", Москва "Диалог-МИФИ", 1996.
-
Foley J.D., van Dam., Feiner S.K., Hugues J.F., "Computer graphics. Principles and practice", Addison-Wesley Pub. Com., 1991.
Оформление задания
Оформление задания ничем не отличается от предыдущих ( см. FAQ)
Архив должен содержать readme.txt файл в специальном формате.
Примечание: нет необходимости присылать файлы glut32.dll, glu32.dll
Результаты работы
Работа высылается по адресу: assign5@graphics.cs.msu.su
|