ПредишенСледващото

Целта на тази работа - да се захващаме на уменията за работа с геометрични обекти за дву- и триизмерни пространства, концепцията за морфинг геометрични обекти, най-простите визуализация умения с помощта на OpenGL.

Той иска да създаде програма, която ви позволява да преобрази дву- и триизмерни обекти с определена форма.

компютърна графика, разбира се - да 4

компютърна графика, разбира се - да 4

Фиг.1 Примери морфин в дву- и триизмерни пространства.

Можете да изтеглите изпълнение проба на задачите в триизмерното пространство.

Предложеният алгоритъм

Ние даваме възможно използване за планарни изпъкнали фигури. Алгоритъмът е очевидно генерализирана за случая на триизмерни фигури.

Подробно описание на алгоритъма може да се намери в инструкциите, придружаващи статията.

Разглеждане на процеса на морфин изпъкнали фигури А в изпъкнала фигура Б.

Нека морфин се извършва по време на интервала от време [0,1]. Необходимо е да се посочи за всяка точка от времето т в [0,1] фигура AB (т), така че AB (0) = А. AB (1) = Б. и AB промяна с течение на времето - гладка.

Фаза I. Създаване на описание на фигурите.

И чрез лицата на фигурите, държани директно - ги наричат ​​ограничаване директно. Фигура ограничена от тези линии - А ''.

Произведени паралелни транспортни линии ограничаващи така че А ' "е минимална фигура с форма В (фиг. 2). Паралелни транспортни лица отделно показани на Фигура 2а, 2Ь, 2с. Фиг. 2d показва резултата: първоначална форма "описан" край. Ако прехвърлянето на продукция за краен период от време, ние получаваме преобрази А до А '':

Analogno генерира изображение B '' фигура В. А. и съдържащ фигура морфин B '= В' (т). Конструкцията на изображението, показано на фиг. 3a-г.

Фигура 2. Създаване описване на фигурите.

Фигура 3. Създаване описване на фигурите.

Етап II. Morphing.

За да се конструира непрекъснат Morphing фигури А и В всеки друг едновременно произвежда морфин А в А 'и В' да Б. За всеки тон на [0,1] AB "(т) е конструирана фигура. който е пресечната точка А '(т) и В' (т). Метод за получаване на междинни части, показани на фиг. 4а. Резултатът е показан в Ric. 4Ь.

процес морфин 4а.

компютърна графика, разбира се - да 4

4В морфин процес.

AB '(0) = A
AB "(1) = B
AB варира плавно във времето

Подробно описание на алгоритъма за триизмерен случай

Забележка: Хората, които искат да практикуват против линейна алгебра, се препоръчва да пропуснете тази част. За останалата част, тя обяснява подробно как да се реши даден проблем.

Стъпка 1. Изграждане на описване на фигурите.

Да приемем, че нормалните лицето Фигура А са насочени навън, ще бъдат наричани половин пространство спрямо лицето (или равнина, съдържащи свързан) стойности и положителен (P + (а)), ако нормалата на лицето се отнася до половината пространство.

Нека морфин резолюция (брой междинни форми между А и В) - Н.

Вземете линия фигура А. означаване на самолета, който го съдържа, а. Изчисляваме минимална вектор г. така, че цифрите А и Б ще лежи изцяло върху едната страна на ръба на ". получен от чрез изместване г.

Сред всички върхове на фигура намерите връх М, най-отдалечен от равнина, разположена в и P + (а). Проекция вектор от произволна точка в нормална M да бъде желания вектор г.

Означаваме равнината, получена чрез прибавяне на него г * (I / N). като (I).

Повторете стъпка 1 за всички аспекти на фигури набор от лицата, получени за всеки означават и А (I).

За фигура B повтори същата процедура, с изключение на това, че: нотация б (I) ще означава B + D * (N-и / N) В аспекти на фигурата.

Стъпка 2. Генериране на морфин.

Защото-ти етап на морфин е необходимо да се намери форма определящ множество равнини А (I) и В (I). Съюзът на тези набори се нарича C (и).

Намираме точки на определени Q ", където три или повече пресичащи краища на C (I).

Получава се от Q 'чрез пропускане на комплект Q точки в положителния половината пространство на поне една от равнините на С (I).

Ще се образува ръб на междинни форми на точки Р.

За всяка равнина на С (I) намират точки на Р. принадлежащ към него (на разстояние от равнината на точка нула). Тези точки ще бъдат върховете на лицето.

Ние брои точки, така че те образуват изпъкнал многоъгълник. Избираме вектор б. свързване на две произволно избрани точки А и В на разглеждания комплекта. Нека п - нормална към равнината, която притежава набор точка (на самолета може да се намери на всеки комплект от три точки). Комплект точки номерация, проведени в съответствие с ъгъла, които е необходимо да се обърне А. б на равнината, минаваща през п и р. Той включва различни от А и Б от точка С набор, т.е. между вектори В и С = АС. Забележка: номерирането имайте предвид, че тогава ще трябва да се намери нормален получи лице.

Забележка: решили проблема в Стъпка 3 - се намери vypuloy обвивка за различни точки на Q. Има по-добър алгоритъм за решаване на този проблем. Изпълнението на тези алгоритми - повод да получите бонус.

задължителна част

Задължително част включва прилагането на морфин изпъкнал многоъгълник в двуизмерен пространство. Програмата има строго определени за начало и край полигони. Потребителят команда започва процес морфин.

процес Morphing трябва да се вижда на екрана - скоростта на процеса трябва да бъде разумен.

Началните и крайните стойности са значително различни: различен брой върхове, ръбове и т.н.

Вместо равнинни фигури (или в допълнение към) на морфин може да се реализира в триизмерното пространство - тази опция дава повече точки. визуализация на процеса се извършва с помощта на OpenGL библиотеки.

Допълнителна част

Възможни са следните за изпълнението на които можете да получите допълнителни точки.

Контролиране на морфин: Бутон напред, назад, пауза, да вземе една стъпка преобрази.

Четене модели полигони или многостенни на файла.

Формат на файла за двумерния случай:

Всеки ред се съхраняват разделени от пространство координати на върховете. Номер връх съвпада с номера на реда. Върховете са номерирани по часовниковата стрелка. Координати на върховете - реални числа в интервала [-1,1].

Формат на файла за триизмерен случая:

MESH_FILE. =
MESH_VERTEX_LIST <>
MESH_FACE_LIST <>
>

Забележка: описанието на символа <и лексемы MESH_VERTEX_LIST, MESH_FACE_LIST нужно рассматривать как строковые константы. - целое неотрицательное число, - вещественное число в диапазоне [-1,1].

Смесването, цвят или текстура. Blending цвята - постепенната промяна на цвета в процеса на морфин една форма в друга. Смесвайки текстури: моделите на изходни и целеви polyhedra насложени текстура. Междинно съединение текстура модели морфин е смес от началните и крайните модели текстура, получени чрез OpenGL multitexturing (cm. Материалите за работа).

Примери на полигони и polyhedra модели:

регистрация

Регистрацията не е различно от обичайните.

ZIP-файл с изходен код и изпълними файлове, наречена според схемата GZV_nnnnnnnn.zip (където G - последната цифра на номера на групата, Z - брой работни места, V - за определяне на номера на версията, NNNNNNNN - студент ID номер), за да изпратите [email protected]. msu.su

Например, един студент от 206 групи с студент номер 06529042, която доставя актуализирана (втори) версия на Втората задача на програмата трябва да изпратите файл с 622_06529042.zip за името.

Не забравяйте да поставите в файл readme.txt файла с. Файлът описва интерфейс на програмата (алгоритъм на програмата, елементите от менюто, контролни клавиши)

резултатите

Резултатите се отнасят до интернет и / или на стойка близо до стаята 703.

бележки

  1. Задачата се движи по строго индивидуален. За сътрудничество или обмен на парчета код поставен -5 точки на всички участници, ако фактът на работата в екип не е бил посочен в readme.txt работни места.
  2. Препоръчително е да се програмира писането на семейството на Windows. Писане под друга операционна система е нежелателно и може да доведе до забавяне на проверката на тези операции.
Подкрепете проекта - споделете линка, благодаря!