Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 21.04.2011, 00:31   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Просчет затеняемых граней многоугольника (2D)

Есть многоугольник, состоящий из вершин
(с) Кэп
Так же есть источник света, не принадлежащий многоугольнику.
Нужно просчитать, какие грани должны отбрасывать тени, а какие не должны. Рисуночег:
(Offline)
 
Ответить с цитированием
Старый 21.04.2011, 00:44   #2
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Просчет затеняемых граней многоугольника (2D)

тебе нужно посчитать т.н. силуэт.
грань проверяется как скалярное произведение вектора нормали и вектора направления света.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (21.04.2011)
Старый 21.04.2011, 01:28   #3
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Просчет затеняемых граней многоугольника (2D)

Хм. Ну вот я получил скалярное произведение, т.е. какое то число. Что ж с ним делать? Немного не догоняю...
(Offline)
 
Ответить с цитированием
Старый 21.04.2011, 02:23   #4
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Просчет затеняемых граней многоугольника (2D)

ну смотри: для силуэта тебе нужны либо все передние либо все задние грани (имхо, передние предпочтительнее).
чтобы определить как грань относится к источнику света - нужно найти угол между векторами (нормаль грани и вектор направления света).
"Просто число" при условии что вектора единичной длины - это косинус искомого угла.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (21.04.2011)
Старый 21.04.2011, 02:29   #5
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Просчет затеняемых граней многоугольника (2D)

ffinder, ты Гений!!! В проге сейчас получил то что хотел - грани, повернутые к свету "лицом", имеют скалярное произведение > 0, другие - иначе Огромное тебе спасибо!!!
(Offline)
 
Ответить с цитированием
Старый 12.05.2011, 10:55   #6
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Просчет затеняемых граней многоугольника (2D)

хм... я делал так. От каждого пикселя проводилась какбы линия (математически). Если по пути от пикселя к источнику света есть препятствие - пиксель будет теневыйм. Только вот тормозит сильно.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:32.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com