Как нарисовать тень многоугольника из списка вершин - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь создать тени, расширяя вершины фигуры и рисуя многоугольник из внешних вершин.

Мне нужен метод, чтобы получить все внешние вершины

Текущая форма многоугольника

Желаемая форма многоугольника

1 Ответ

0 голосов
/ 22 февраля 2020

Предполагая, что кто-то хочет изобрести колесо в учебных целях. (Вокруг много графических движков.) Интуитивно кажется необходимым создать простой трассировщик лучей.

  1. Создать источник света.
  2. Нарисуйте воображаемые линии от источника света.
  3. Везде, где линии ударяются о зеленые области, расширяйте их, чтобы создать тень.
  4. Перерисуйте зеленый объект сверху, чтобы скрыть беспорядок. enter image description here

Другой вариант - создать более сложный трассировщик лучей.

  1. Создать виртуальную 3D-сцену.
  2. Нарисуйте тень в виде трехмерного выдавливания в виртуальном пространстве.
  3. Проецирование сцены на 2D-холст с использованием трафаретов и теней . enter image description here (нарисовано с помощью Gimp с использованием фильтра "длинные тени").
...