Продолжение вчерашней статьи, посвящённой fЁлке, ниже.

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

Трапеция

Здесь дважды применяется модуль числа, меняя константы под модулем и вычитаемое мы можем регулировать длину отрезка с константным значением y и само значение y на данном отрезке. Данная функция позже пригодится для сугробов и ведра.

Альтернативный эллипс

Альтернативная запись эллипса. Константы внутри скобок отвечают за координаты центра эллипса, константы перед скобками – за степень сжатия по осям, число за корнем – радиус.

Эллипс по двум точкам

Согласно определению, эллипс – это замкнутая кривая, сумма расстояний каждой точки которой до двух точек (A и B на изображении) равна постоянной величине. Данный тип эллипса пригодится для рисования рук снеговику.

Прямоугольник

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

Если размер прямоугольника одинаков – его можно вынести за знак сравнения:

Снеговик

Тело – три эллипса

Объединение снеговика – операция min ко всем эллипсам.

Ведро на голову!

Шаг первый – трапеция

Шаг второй – доработаем форму, поднимем ведро

Для того, чтобы поднять ведро – добавляем 2 в начало, чтобы стенки ведра стали более крутыми – поставим множители перед модулями.

Шаг третий – ограничение снизу

Применим схожую методику, как делали это с ёлкой.

Черный график:

Красный график

Суммируем, получаем ограничитель для ведра

Применяем – ведро готово

Шаг пятый – наденем ведро на голову

Переместим

Объединим со снеговиком

Здесь минус перед s4 по той причине, что для получения ведра использовалось сравнение >0, вместо <0, когда велась работа с эллипсами.

Руки – эллипсы

Ось симметрии снеговика – это x = 10, поэтому можно создать две руки, а позже глаза и рот, одной функцией.

Пальцы аналогично, но симметрия не только по х = 10, но и у = 2.55

Тело снеговика по элементам

Результат тела снеговика

Лицо

Глаза – 2 круга

Рот – два эллипса

Все функции снеговика для вставки в desmos

s_{1}=sqrt{left(x-10right)^{2}+1.1left(y-2.7right)^{2}}-0.85

s_{2}=sqrt{left(x-10right)^{2}+1.2left(y-1.05right)^{2}}-1.15

s_{3}=sqrt{left(x-10right)^{2}+1.1left(y-3.85right)^{2}}-0.55

s_{4}=2-1.9left|x-9.7right|-1.9left|x-10.3right|-left(frac{left(left|y-4right|+y-4right)}{2}+frac{100left(left|y-4right|-y+4right)}{2}right)

h_{1}=sqrt{left(left|x-10right| – 0.8right)^{2}+left(y-2.7right)^{2}}+sqrt{left(left|x-10right| – 2.8right)^{2}+left(y-2.5right)^{2}}-2.015

h_{2}=sqrt{left(left|x-10right| – 1.9right)^{2}+left(y-2.55right)^{2}}+sqrt{left(left|x-10right| – 2.3right)^{2}+left(left|y-2.55right|-0.3right)^{2}}-0.51

minleft(s_{1}, s_{2},s_{3},-s_{4},h_{1},h_{2}right)le0

100left(left|x-10right|-0.2right)^{2}+100left(y-3.95right)^{2}le1

left(300left(left|x-10right|-0.03-0.-left(y-3.6right)right)^{2}+3000left(y-3.6right)^{2}right)le1

Сугробы

Сугробы – функция модуля синуса с константной частотой и изменяемой амплитудой. Амплитуду будем регулировать с помощью трапеций.

Суммируем

Результат

Все функции сугробов

d_{1}=-left|x+7right|-left|x-14right|+22

d_{2}=left|x+2.7right|+left|x-2.7right|-6.35

d_{3}=left|x-9right|+left|x-11right|-2.8

d=d_{1}+left|d_{1}right|+d_{2}-left|d_{2}right|+d_{3}-left|d_{3}right|

0.3dleft|sinleft(13xright)right|

Снежинки

Всё предельно просто. Снежинка – это “окружность наоборот”, вместо второй степени используется корень, а для того, чтобы он вычислялся используются модули x и у.

Много снежинок

Используем mod, остаток от деления

Результат

Корректировка снежинок

Снежинки закрывают ёлку и снеговика, исправим это с помощью эллипсов.

Комбинируем

Все формулы снежинок

f_{1}=sqrt{left|operatorname{mod}left(x,2right)-1right|}+sqrt{left|operatorname{mod}left(y,2right)-1right|}-0.45

f_{2}=2xx+left(y-6right)^{2}-40

f_{3}=2left(x-10right)^{2}+left(y-2.5right)^{2}-10

minleft(-f_{1},f_{2},f_{3}right)ge0

Подарки под ёлку

Подарок – это квадрат. Подарков будет два, поэтому используя |x| будем рисовать сразу два подарка и сразу два бантика к ним.

Формула

maxleft(left|left|xright|-2.1right|,left|y-0.5right|right)le0.5

Бантики к подаркам

Модуль

Гипербола

Круг

Эллипс

Внезапный ход: множим эллипс на модуль

Комбинируем все элементы

Все формулы для бантиков

j_{1}=left|0.9left|left|xright|-2.1right|right|-left(y-1right)-0.2

j_{2}=left|left|xright|-2.1right|^{2}-left(y-1right)^{2}-0.05

j_{3}=0.2left|left|xright|-2.1right|^{2}+0.2left(y-1right)^{2}-0.1

j_{4}=left(0.5left|left|xright|-2.1right|right)^{2}+left(y-1right)^{2}-0.02

maxleft(j_{1}j_{4}, -j_{2}, j_{3}right)le0

Цифры

Для начала зададим локальную систему координат, это будет полезно, когда мы будем двигать надпись.

2021 в римской системе счисления будет MMXXI, это несколько упрощает задачу

Две буквы “М”

Определим для начала функцию t2, которая будет ограничивать каждую букву М

Теперь “окошки”, чтобы у букв появились вертикальные элементы

Теперь V-образные элементы

Скомбинируем в одну формулу

Две буквы “Х”

Применяем знакомые ограничители

Крестообразные элементы

Объединим

Сдвинем на 4.1 вправо, теперь ХХ займут своё место

Одна буква “I”

Тривиально, сразу же поставим “I” на её место

Все формулы для букв

t_{2}=maxleft(left|left|x_{1}right|-1right|,left|y_{1}-0.89right|right)-0.95

maxleft(minleft(-t_{2},maxleft(left|1.2left|x_{1}right|-1.2right|,left|y_{1}-0.9right|right)-1right),minleft(left|2left|x_{1}right|-2right|-y_{1},-left|2left|x_{1}right|-2right|+y_{1}+0.2,-t_{2}right)right)ge0

maxleft(-minleft(left|left|x_{1}-4.1right|-1.05right|-left|y_{1}-0.9right|, -left|left|x_{1}-4.1right|-1.05right|+left|y_{1}-0.9right|+0.15right),maxleft(left|left|x_{1}-4.1right|-1.05right|,left|y_{1}-0.9right|right)-1right)le0

Сдвинем локальную систему координат

Краткие замечания по работе

Первое, на что хочется обратить внимание – то, что для рисунка применялись функции, неограниченные искусственно, как например sin(x), x∈(-5, 5). Все ограничения создаются естественным путём на базе арифметических операций с функциями.

Минимум и максимум также можно выразить с помощью простейших операций:

Поэтому использование функций min и max в формулах фигур легально в данной задаче.

Let’s block ads! (Why?)

Read More

Recent Posts

VK купила 40% билетной платформы Intickets.ru

VK объявляет о приобретении 40% компании Intickets.ru (Интикетс). Это облачный сервис для контроля и управления продажей билетов на мероприятия. Сумма…

15 часов ago

OpenAI готовится запустить поисковую систему на базе ChatGPT

OpenAI готовится запустить собственную поисковую систему на базе ChatGPT. Информацию об этом публикуют западные издания. Ожидается, что новый поисковик может…

24 часа ago

Роскомнадзор рекомендовал хостинг-провайдерам ограничить сбор данных с сайтов для иностранных ботов

Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…

2 дня ago

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

7 дней ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

7 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

1 неделя ago