---
# System prepended metadata

title: Учебная практика 2022. Понедельник 27.06. Первая группа. Азаров Владимир Михайлович.

---

      
# Учебная практика 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).