Как сделать ёлку, если ты математик

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Базовая идея

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

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

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

x+\left|x\right|

Эллипс

\frac{\left(x-2\right)^{2}}{3}+\frac{\left(y-3\right)^{2}}{1}=1

Ёлка

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

-\left(y-13\right)-2\left|x\right|=0

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

-0.2\cos\left(6.8y\right)\left(y-13\right)-2\left|x\right|=0

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

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

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

-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)=0

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

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

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

2x=5\left(y-\left|y-2\right|\right)

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

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

Комбинируем

-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)=0

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

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)=0

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

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

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

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

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

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

-a\le0, b\le0

Финал

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

Все формулы для вставки в 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

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

Источник: https://habr.com/ru/post/535834/


Интересные статьи

Интересные статьи

Если вы когда-либо обзаведётесь технологиями умного дома, то скорее всего, в числе первых купленных устройств у вас окажутся именно умные лампочки. Они действительно удоб...
Не одно тысячелетие математиков интересовал вопрос существования нечётных совершенных чисел. В процессе его изучения они составили невероятный список ограничений для этих гипотетическ...
В этой статье мы рассмотрим, как система управления 1С-Битрикс справляется с большими нагрузками. Данный вопрос особенно актуален сегодня, когда электронная торговля начинает конкурировать по обороту ...
Привет, Хабр! Меня зовут Сания Галимова, я 6 лет в рекламе, два из них — руковожу отделом маркетинга в IT-компаниях и уже 4 года пью психотропные препараты по назначению психиатр...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.