# Учебная практика 2022. Понедельник 27.06. Первая группа. Азаров Владимир Михайлович. [TOC] ## Задание 1 ### Условие Создать одиночную страницу c названием, в котором есть Ваше Имя и Фамилия, на сайте replit.com, в которой указываются Ваши Фамилия Имя Отчество + Название Вашей специальности+ Курс+ Ваше Фото в профиль Cсылки на сайт shadertoy.com c реализованной Вами с помощью неявных функций в пиксельном шейдере (адаптированный вариант использования языка GLSL) ### Решение Очевидно. Работа находится по [ссылке](https://replit.com/@VAONU/Mypage) ## Задание 2 ### Условие Нужно визуализировать лошарика ![](https://i.imgur.com/IwFH0wJ.png) ### Решение Идея решения следующая: Для каждой точки (предварительно нормализованной) последовательно проверяется её принадлейжность к кругам, которые заданы в глобальном массиве. Если выходит, что точка принадлежит некоторому кругу, то она красится в цвет этой фигуры. ```glsl=1 #define _(x) (float(x) / 255.0) #define d2(x) ((x)*(x)) struct Circle { vec2 center; float radius; vec3 color; }; Circle ca[] = Circle[]( Circle(vec2(0.2, -0.4), 0.4, vec3(_(219), _(147), _(11))), ... ); int ca_len = 40; bool isin_circle(vec2 p, Circle c) { float scale = iResolution.y / iResolution.x; return d2(p.x - c.center.x) + d2((p.y - c.center.y) * scale) < d2(c.radius); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { // Normalized pixel coordinates (from 0 to 1) vec2 uv = fragCoord/iResolution.xy; /* Background */ fragColor = vec4(_(48), _(21), _(38), 1.0); int i; for (i = 0; i < ca_len; ++i) { if (isin_circle(uv, ca[i])) fragColor = vec4(ca[i].color, 1.0); } } ``` Так как экран не квадратен, то чтобы нарисовать круг, а не область ограниченную элипсом, следует домножить разность Y координат на корректирующий коэффициент. Он равен отношению высоты экрана к его ширине (в пикселях). Работа находится по [ссылке](https://www.shadertoy.com/view/ss3fDn). ![](https://i.imgur.com/nZYUDbv.png) ## Задание 3 ### Условие Следует математически визуализировать Буратино или Сверчка. ![](https://i.imgur.com/HETV1AE.png) ### Решение В процессе. Код доступен по [ссылке](https://www.shadertoy.com/view/NddBDr).