IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Закраска по методу Гуро и Фонга
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Мне нужно изобразить тетраэдр , выполнить закраску Фонга относительно выбранного источника света, разработать процедуру управления скоростью вращения тела с одинаковыми ускорениями по осям и обеспечения перехода на низкозатратную процедуру Гуро и далее на закраску с использованием таблиц освещенности при увеличении угловых скоростей вращения.

Вот... Не знаю даже, с чего начать... Теорию по методам закраски изучила.... но с таким никогда не сталкивалась, поэтому с реализацией большие проблемы....

вот на что думаю опираться:
1. Получить нормаль грани: выбрать два вектора, лежащие в этой грани и найти их векторное произведение, нормировать этот вектор.
2. Записать найденные нормали граней в массив (normg[i]). Чтобы определить нормаль каждой вершины, определяем из таблицы граней для каждой вершины, какие грани в ней сходятся, и для этих найденных граней их нормали суммируем, а сумму нор-мируем (массив normv[i]).
3. Алгоритм Гуро. После того, как нормали вершин найдены, вы-числяем согласно модели освещения освещенность каждой вершины и записываем освещенности в массив освещенностей. Этот массив будет использоваться в процедуре рисования грани.
Алгоритм Фонга. Координаты найденных нормалей вершин пе-реводятся в сферические координаты, так что нормали представле-ны двумя числами типа byte. Нормали в таком виде будут использо-ваны процедурой рисования грани.
4. Реализовать процедуру рисования грани, для чего необходимо провести интерполяцию для определения освещенности (в ме-тоде Гуро) и нормали (в методе Фонга) для каждой точки гра-ни.
Закраску граней можно произвести путем заполнения внутренней области этой грани отрезками прямых, параллельных оси OX. Для этого найдем вершины грани с наименьшей и наибольшей координатой Y.
В качестве начальной возьмем вершину с наименьшей координатой Y. Разобьем условно множество ребер, составляющих грань, на две группы – левую и правую. Будем по очереди брать одно ребро из левой и одно из правой части, т.е. всегда работать с парой ребер. Выбор ребер может производиться следующим образом: сначала берем в качестве левого ребра ребро, начинающееся в начальной вершине и заканчиваю-щееся в следующей по порядку при обходе влево. Это ребро (l0,lk). Аналогично, в качестве первого правого ребра – ребро (r0,rk). Теперь в цикле будем строить прямые, параллельные оси X, начиная с прямой Y = Ymin, каждый раз увеличивая ординату. Для каждой этой прямой бу-дем находить точки пересечения с нашей парой боковых ребер. Если одно из боковых ребер не имеет точки пересечения с этой прямой, то его отбрасываем и берем следующее из его группы (левой или правой).
Если точки пересечения найдены, то найдем, какая часть левого и правого ребра пройдена, это значение запишется соответственно в пе-ременные tl и tr. Значение переменных tl и tr используется на первом шаге билинейной интерполяции в методе Гуро для нахождения осве-щенности в точках пересечения прямой, параллельной оси Х, и ребер, а в методе Фонга для определения нормалей тела в этих точках. Второй шаг интерполяции ведется аналогично, только вдоль отрезка, заключен-ного между парой ребер. Таким образом, вычисляется необходимая ин-формация для каждой точки грани.

но как всё это реализовать - не знаю! С чего начинать! Может быть кто-нибудь может привести реализацию методов закраски?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
18192123   Закраска по методу Гуро и Фонга   17.04.2007 1:41
18192123   получилось нарисовать фигуру и вращать её, вот тол…   18.04.2007 0:52
18192123   а как выбрать источник света и как с ним работать?   18.04.2007 2:53
volvo   Марина, загляни вот сюда: Dasaev Demo Guide v1.1 …   18.04.2007 3:07
18192123   Марина, загляни вот сюда: Dasaev Demo Guide v1.1 …   18.04.2007 18:18
18192123   а может есть ещё что-то такое?   18.04.2007 23:55
18192123   Нашла вот такую программу для закраски тетраэдра: …   19.04.2007 16:10
Malice   мне здесь не понятно назначение функции minz пои…   20.04.2007 19:49
18192123   Если тетраэдр с его вершинами и сторонами задаётся…   19.04.2007 22:19
18192123   и что значит "нормировать" вектор? ( как…   20.04.2007 1:49
Malice   Вот еще с далеких фидошных времен откопался пример…   20.04.2007 1:55
18192123   Вот еще с далеких фидошных времен откопался приме…   20.04.2007 3:26
18192123   Спасибо! Но лучше уж я с чистого листа начну.…   20.04.2007 12:11
Сергей   Почему никто не хочет мне этого объяснить на моём…   25.04.2007 16:13
Lapp   и что значит "нормировать" вектор? ( ка…   20.04.2007 12:18
18192123   Я думаю, нормировать - это значит сделать так, чт…   20.04.2007 12:21
Lapp   :blink: никогда о таком не слышала...а можно пока…   20.04.2007 12:37
18192123   Ai'=Ai/|A| Остальное позже. Машина в ремонт…   20.04.2007 12:48
Lapp   |A| - поясни пожалуйста, это модуль чего? (без i)…   20.04.2007 14:53
18192123   procedure draw(color:byte); begin for p:=0 to 5 …   24.04.2007 1:32
Malice   а именно, не пойму, для чего *2, *3, прибавляем …   24.04.2007 2:34
18192123   Что ж тут не понятного ? Массив Line_ заполнен та…   24.04.2007 2:56
Malice   спасибо за объяснение! а для чего умножение н…   24.04.2007 4:12


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 10:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name