Поздравляю Хабр и Хаброжителей с Новым 2021 годом и дарю всем нам вот такую незатейливую и приятную Функциональную Ёлку (fЁлка). В этой статье я рассказываю как сделать ёлочку на мониторе за 10 минут. Свою вторую статью я посвящу тому, как "слепить" снеговика, положить подарки под ёлку и всё это припорошить сверху снегом.

Базовая идея

Весь рисунок - это набор математических функций от двух аргументов, x и y. Все они так или иначе базируются на SDF. Для рисования графиков использовался desmos.com.

Базовые функции

Ограничение нуля

Эллипс

Ёлка

Опишем основу ёлки

Добавим ветви

Пригнём кончики ветвей к земле

Ограничим ель сверху

Ель съехала вниз, это исправится позднее

Параллельный ход: ограничение снизу

Ограничитель

Итог данного этапа

Комбинируем

Финальный штрих

Займёмся стволом

Эллипс с более острыми углами

Объединение объектов

Объединение, пересечение и вырезание базируются на простейшей операции min(a, b). В зависимости от знаков перед a и b получаются различные булевы операции.

Листва - a(xy), ствол - b(xy)

Финал

Все формулы для вставки в desmos.com

a=2-0.2\cos\left(6.8y+0.7\left|x\right|\right)\left(y-13\right)-2\left|x\right|-0.51\left(y+\left|y\right|\right)+5\left(y-\left|y-2\right|\right)

b\ =\ 0.1x^{10}+30\left(y-1\right)^{10}-1

\min\left(-a,\ b\right)\le0

Продолжение следует...