forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Просчет затеняемых граней многоугольника (2D) (http://forum.boolean.name/showthread.php?t=14618)

Reizel 21.04.2011 00:31

Просчет затеняемых граней многоугольника (2D)
 
Есть многоугольник, состоящий из вершин
(с) Кэп
Так же есть источник света, не принадлежащий многоугольнику.
Нужно просчитать, какие грани должны отбрасывать тени, а какие не должны. Рисуночег:

ffinder 21.04.2011 00:44

Ответ: Просчет затеняемых граней многоугольника (2D)
 
тебе нужно посчитать т.н. силуэт.
грань проверяется как скалярное произведение вектора нормали и вектора направления света.

Reizel 21.04.2011 01:28

Ответ: Просчет затеняемых граней многоугольника (2D)
 
Хм. Ну вот я получил скалярное произведение, т.е. какое то число. Что ж с ним делать? Немного не догоняю...

ffinder 21.04.2011 02:23

Ответ: Просчет затеняемых граней многоугольника (2D)
 
ну смотри: для силуэта тебе нужны либо все передние либо все задние грани (имхо, передние предпочтительнее).
чтобы определить как грань относится к источнику света - нужно найти угол между векторами (нормаль грани и вектор направления света).
"Просто число" при условии что вектора единичной длины - это косинус искомого угла.

Reizel 21.04.2011 02:29

Ответ: Просчет затеняемых граней многоугольника (2D)
 
ffinder, ты Гений!!! В проге сейчас получил то что хотел - грани, повернутые к свету "лицом", имеют скалярное произведение > 0, другие - иначе :) Огромное тебе спасибо!!!

PassCall 12.05.2011 10:55

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot