Я строю 2D-игру, в которой игрок может видеть только объекты, которые не блокируются другими объектами. Рассмотрим этот пример, как он выглядит сейчас:«Инвертирование» вогнутого многоугольника
Я реализовал алгоритм трассировки лучей для этого, и, похоже, он работает очень хорошо (я уменьшил границы для демонстрации, чтобы все видимые края).
Как вы можете видеть, легче район застроен с кучей треугольников, каждый из которых имеет общую точку в позиции игрока. У каждых двух соседей есть две общие точки.
Однако я готов вычислить границы для внешней части полигона, чтобы заполнить его с черным цветом треугольники «скрываются», что игрок не может видеть.
Один из способов сделать это - «замаскировать» черный прямоугольник текущим многоугольником, но я боюсь, что он очень неэффективен.
Любые идеи об эффективном алгоритме для достижения этого?
Спасибо!
по _external_ вы имеете в виду заполнение невидимых областей с треугольников (или полигонов)? –
@willywonka_dailyblah Да, точно. Я тоже задал вопрос, чтобы уточнить это. –