# **Учебная практика 2022. Вторник 28.06**
Мулярчук Владислава Сергеевна
[TOC]
# Отчет проделанной роботы:
# Присутствовала на паре
# Везде зарегестрировалась
# *Задание №3*
математической визуализацией Буратино
## Решение роботы
На сайте shadertoy.com с помощью неявных функций в пиксельном шейдере. Написать функцию которая рисует круги и линии разных цветов для каждой части головы создавая Буратино.
## Cсылка на роботу
https://www.shadertoy.com/view/Nd3BW8
## Код к роботе
```glsl=1
bool circle(vec2 uv, vec2 center, float r)
{
return (uv.x + center.x) * (uv.x + center.x) + (uv.y + center.y) * (uv.y + center.y) < r*r;
}
bool lineOver(vec2 uv, vec3 line) //верхняя линия
{
return uv.y * line.y >= uv.x * line.x + line.z;
}
bool lineUnder(vec2 uv, vec3 line) //нижняя линия
{
return uv.y * line.y <= uv.x * line.x + line.z;
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv =2.0*fragCoord/iResolution.xy-1.0 ;
uv.x = uv.x*iResolution.x/iResolution.y;
//задаем цвета
vec4 red = vec4(1.0, 0.2, 0.4, 1.0);
vec4 white = vec4(1.0, 1.0, 1.0, 1.0);
vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
vec4 body = vec4(1.0, 0.8, 0.5, 1.0);
vec4 pink = vec4(1.0, 0.4, 0.4, 0.5);
vec4 blue = vec4(0.0, 0.1, 0.7, 0.0);
vec4 fon = vec4(1.0, 1, 0.8, 1.0);
//цвет фона
fragColor = fon;
//рисуем голову
if(circle(uv, vec2(0.5, 0.1), 0.35))
fragColor = body;
if(circle(uv, vec2(0.4, -0.005), 0.08))
fragColor = black;
if(circle(uv, vec2(0.41, -0.04), 0.085))
fragColor = body;
if(lineOver(uv, vec3(1.0, -14.0, 0.5)) && lineUnder(uv, vec3(-1.0, -14.0, 2.0)) && uv.x >= -0.17) //nose
fragColor = body;
if(circle(uv, vec2(0.31, 0.26), 0.080))
fragColor = black;
if(circle(uv, vec2(0.31, 0.3), 0.083))
fragColor = body;
if(circle(uv, vec2(0.45, 0.22), 0.11))
fragColor = pink;
//шляпа
if(uv.y >= 0.12 && uv.y <= 0.24 && uv.x >= -0.77 && uv.x <= -0.23)
fragColor = red;
if(circle(uv, vec2(0.23, -0.18), 0.06))
fragColor = red;
if(circle(uv, vec2(0.77, -0.18), 0.06))
fragColor = red;
if(uv.y >= 0.14 && uv.y <= 0.23 && uv.x >= -0.77 && uv.x <= -0.23)
fragColor = red;
if(circle(uv, vec2(0.23, -0.185), 0.045))
fragColor = red;
if(circle(uv, vec2(0.77, -0.185), 0.045))
fragColor = red;
if(lineOver(uv, vec3(-3.0, -1.0, -2.5)) && lineUnder(uv, vec3(-3.0, 1.0, -0.5)) && uv.y >= 0.24 && uv.y <= 0.9)
fragColor = red;
if(circle(uv, vec2(0.5, -0.87), 0.10))
fragColor = blue;
//тело и шея
if(uv.y >= -0.79 && uv.y <= -0.43 && uv.x >= -0.57 && uv.x <= -0.43)
fragColor = body;
if(circle(uv, vec2(0.47, 0.987), 0.445))
fragColor = red;
if(circle(uv, vec2(0.1, 0.95), 0.05))
fragColor = white;
if(circle(uv, vec2(0.15, 0.79), 0.05))
fragColor = white;
if(circle(uv, vec2(0.25, 0.65), 0.05))
fragColor = white;
}
}
```
# *Задание №4*
Mатематической визуализацией Имени и Фамилии
## Ссылка на роботу
https://www.shadertoy.com/view/ssdBD8
## Код
```glsl=1
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = 2.0*vec2(fragCoord.xy - 0.5*iResolution.xy)/iResolution.y;
fragColor = vec4(1.0,1.0,1.0,1.0);
vec3 black = vec3(0.0,0.0,0.0);
float x1;
float y1;
float r;
//М
x1= uv.x +1.7;
y1 = uv.y + 0.1;
if(abs(x1)<0.015 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.68;
y1 = uv.y - 0.0255;
if(abs(x1)<0.03 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.65;
y1 = uv.y + 0.03;
if(abs(x1)<0.02 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.62;
y1 = uv.y + 0.052;
if(abs(x1)<0.025 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.58;
y1 = uv.y + 0.03;
if(abs(x1)<0.02 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.55;
y1 = uv.y - 0.0255;
if(abs(x1)<0.03 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.52;
y1 = uv.y +0.11;
if(abs(x1)<0.015 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
//У
x1 = uv.x + 1.25;
y1 = uv.y + 0.11;
if(abs(x1)<0.015 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.41;
y1 = uv.y -0.01;
if(abs(x1)<0.015 && abs(y1)<0.03){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.39;
y1 = uv.y + 0.02;
if(abs(x1)<0.03 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.35;
y1 = uv.y + 0.04;
if(abs(x1)<0.01 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.32;
y1 = uv.y +0.07;
if(abs(x1)<0.04 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
//Л
x1 = uv.x + 0.99;
y1 = uv.y +0.1;
if(abs(x1)<0.01 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.15;
y1 = uv.y +0.2;
if(abs(x1)<0.02 && abs(y1)<0.03){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.12;
y1 = uv.y +0.22;
if(abs(x1)<0.02 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.09;
y1 = uv.y+0.08;
if(abs(x1)<0.01 && abs(y1)<0.13){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.05;
y1 = uv.y-0.03;
if(abs(x1)<0.04 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
//Я
x1 = uv.x + 0.92;
y1 = uv.y + 0.03;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.84;
y1 = uv.y -0.029;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.78;
y1 = uv.y +0.1 ;
if(abs(x1)<0.01 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.85;
y1 = uv.y + 0.08;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.83;
y1 = uv.y + 0.13;
if(abs(x1)<0.01 && abs(y1)<0.03){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.86;
y1 = uv.y + 0.18;
if(abs(x1)<0.04 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.9;
y1 = uv.y +0.2;
if(abs(x1)<0.01 && abs(y1)<0.03){
fragColor = vec4(black,1.0);
}
//Р
x1 = uv.x + 0.66;
y1 = uv.y +0.08;
if(abs(x1)<0.01 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.6;
y1 = uv.y -0.06;
if(abs(x1)<0.09 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.52;
y1 = uv.y +0.01;
if(abs(x1)<0.01 && abs(y1)<0.06){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.58;
y1 = uv.y +0.08;
if(abs(x1)<0.09 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
//Ч
x1 = uv.x + 0.42;
y1 = uv.y + 0.001;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.35;
y1 = uv.y+ 0.06;
if(abs(x1)<0.05 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.28;
y1 = uv.y + 0.08;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
//у
x1 = uv.x + 0.05;
y1 = uv.y + 0.06;
if(abs(x1)<0.015 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.2;
y1 = uv.y -0.065;
if(abs(x1)<0.01 && abs(y1)<0.05){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.15;
y1 = uv.y -0.03;
if(abs(x1)<0.04 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.12;
y1 = uv.y + 0.02;
if(abs(x1)<0.01 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.08;
y1 = uv.y +0.07;
if(abs(x1)<0.04 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
//К
x1 = uv.x - 0.05;
y1 = uv.y + 0.06;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.20;
y1 = uv.y - 0.061;
if(abs(x1)<0.02 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.17;
y1 = uv.y - 0.02;
if(abs(x1)<0.03 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.15;
y1 = uv.y - 0.0050;
if(abs(x1)<0.01 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.12;
y1 = uv.y +0.059;
if(abs(x1)<0.05 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
x1 = uv.x-0.15;
y1 = uv.y+0.08 ;
if(abs(x1)<0.02 && abs(y1)<0.04){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.17;
y1 = uv.y + 0.13;
if(abs(x1)<0.04 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.2;
y1 = uv.y + 0.17;
if(abs(x1)<0.01 && abs(y1)<0.06){
fragColor = vec4(black,1.0);
}
//В
x1 = uv.x + 1.1;
y1 = uv.y + 0.7;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 1.0;
y1 = uv.y + 0.53;
if(abs(x1)<0.07 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x +0.92;
y1 = uv.y + 0.8;
if(abs(x1)<0.01 && abs(y1)<0.06){
fragColor = vec4(black,1.0);
}
x1 = uv.x +0.92;
y1 = uv.y + 0.6;
if(abs(x1)<0.01 && abs(y1)<0.06){
fragColor = vec4(black,1.0);
}
x1 = uv.x +1.0;
y1 = uv.y + 0.67;
if(abs(x1)<0.07 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x +1.0;
y1 = uv.y + 0.75;
if(abs(x1)<0.07 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x +1.0;
y1 = uv.y + 0.87;
if(abs(x1)<0.07 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
//Л
x1 = uv.x + 0.750;
y1 = uv.y +0.7;
if(abs(x1)<0.01 && abs(y1)<0.15){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.89;
y1 = uv.y +0.84;
if(abs(x1)<0.02 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.87;
y1 = uv.y+0.7;
if(abs(x1)<0.01 && abs(y1)<0.13){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.79;
y1 = uv.y+0.55;;
if(abs(x1)<0.05 && abs(y1)<0.02){
fragColor = vec4(black,1.0);
}
//А
x1 = uv.x +0.62;
y1 = uv.y + 0.70;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.48;
y1 = uv.y + 0.7;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x +0.54;
y1 = uv.y + 0.54;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.56;
y1 = uv.y + 0.68;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
//Д
x1 = uv.x +0.3;
y1 = uv.y + 0.60;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.18;
y1 = uv.y + 0.6;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
x1 = uv.x +0.25;
y1 = uv.y + 0.54;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.25;
y1 = uv.y + 0.68;
if(abs(x1)<0.12 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x +0.36;
y1 = uv.y + 0.750;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
x1 = uv.x + 0.12;
y1 = uv.y + 0.75;
if(abs(x1)<0.01 && abs(y1)<0.08){
fragColor = vec4(black,1.0);
}
//А
x1 = uv.x +0.05;
y1 = uv.y + 0.70;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x - 0.08;
y1 = uv.y + 0.7;
if(abs(x1)<0.01 && abs(y1)<0.17){
fragColor = vec4(black,1.0);
}
x1 = uv.x -0.02;
y1 = uv.y + 0.54;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
x1 = uv.x -0.02;
y1 = uv.y + 0.68;
if(abs(x1)<0.06 && abs(y1)<0.01){
fragColor = vec4(black,1.0);
}
}
```
# Задание№5
математической визуализацией Автопортрета в профиль (автопортрет должен быть узнаваем - будет сравниваться с Вашим фото)
## Решение
С помощью сайт https://open-graphics-service.glitch.me/ сгенерировала точки для автопортрета в профиль.Задание в процесе выполнения