![]() |
Просчет затеняемых граней многоугольника (2D)
Есть многоугольник, состоящий из вершин
(с) Кэп Так же есть источник света, не принадлежащий многоугольнику. Нужно просчитать, какие грани должны отбрасывать тени, а какие не должны. Рисуночег: |
Ответ: Просчет затеняемых граней многоугольника (2D)
тебе нужно посчитать т.н. силуэт.
грань проверяется как скалярное произведение вектора нормали и вектора направления света. |
Ответ: Просчет затеняемых граней многоугольника (2D)
Хм. Ну вот я получил скалярное произведение, т.е. какое то число. Что ж с ним делать? Немного не догоняю...
|
Ответ: Просчет затеняемых граней многоугольника (2D)
ну смотри: для силуэта тебе нужны либо все передние либо все задние грани (имхо, передние предпочтительнее).
чтобы определить как грань относится к источнику света - нужно найти угол между векторами (нормаль грани и вектор направления света). "Просто число" при условии что вектора единичной длины - это косинус искомого угла. |
Ответ: Просчет затеняемых граней многоугольника (2D)
ffinder, ты Гений!!! В проге сейчас получил то что хотел - грани, повернутые к свету "лицом", имеют скалярное произведение > 0, другие - иначе :) Огромное тебе спасибо!!!
|
Ответ: Просчет затеняемых граней многоугольника (2D)
хм... я делал так. От каждого пикселя проводилась какбы линия (математически). Если по пути от пикселя к источнику света есть препятствие - пиксель будет теневыйм. Только вот тормозит сильно.
|
Часовой пояс GMT +4, время: 15:57. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot