## Учебная практика 2022. Понедельник 27.06 (или Вторник 28.06). Мединец Илья Сергеевич [TOC] ## Задание №1 В данном задании надо было создать одиночную страницу c названием, в котором есть Ваше Имя и Фамилия, на сайте replit.com, в которой указываются мои ФИО, Название Вашей специальности,Курс и Фото в профиль. #### Решение задания Создаем файли HTML ,CSS исполбзуя тег `<div>` добавляем имя и фамилию, с помощью тэга `<img>` подключаем фотографию ```html=11 <body> <p>Мединец Илья Сергеевич + Прикладная математика + Первый курс</p> <div> <img src="pic.jpg"> </div> </body> ``` Уменьшаем размер картинки с помощью `style.css` так она слишком большая: ```html=1 html, body { height: 100%; width: 100%; } img{ height: 50%; width: 50%; } ``` #### Ссылка на код https://replit.com/@Illia-Sierghii1/Ilia-Miediniets#index.html ## Задание №2 Визуализировать лошарика при помощью GLSL. ### Решение задания Для начала мы, как и в последиющих решениях нормализируем координаты для работы в плоскости: ```glsl=4 vec2 uv = 2.0*vec2(fragCoord.xy - 0.5*iResolution.xy)/iResolution.y; ``` Закрашиваем всю плоскость белым цветом: ```glsl=6 fragColor = vec4(1.0,1.0,1.0,1.0); ``` Сразу подготовим нужные цвета: ```glsl=7 vec3 bgCol = vec3(0.3); vec3 blue = vec3(0.1, 0.9, 0.9); vec3 red = vec3(1.0, 0.1, 0.2); vec3 purple = vec3(0.5, 0.0, 0.5); vec3 orange = vec3(1.0, 0.7, 0.0); vec3 green = vec3(0.0, 1.0, 0.0); vec3 darkblue = vec3(0.0, 0.0, 1.0); vec3 yellow = vec3(1.0, 1.0, 0.0); ``` Для рисования круга мы будем проверять, принадлежит ли точка кругу, и если ответ положительный, будем закрашивать ее: ```glsl=22 x1 = uv.x - 0.74; y1 = uv.y + 0.81; r = 0.09; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(blue,1.0); } ``` где r - радиус круга, а (0.74,-0,81) - координаты центра круга. #### Ссылка на код https://www.shadertoy.com/view/sd3BD8 ## Задание №3 Провести математическую визуализацию Буратино или сверчка на сайте shadertoy.com при помощи неявных функций в пиксельном шейдере. ### Решение задания ```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 red = vec3(1.0,0.2,0.2); vec3 darkred = vec3(0.7,0.1,0.1); vec3 black = vec3(0.0,0.0,0.0); vec3 body = vec3(1.0,0.95,0.5); vec3 pink = vec3(1.0, 0.5, 0.5); vec3 lblue = vec3(0.0,0.6,1.0); float x1; float y1; float r; x1 = uv.x + 0.2; y1 = uv.y + 0.1; if(abs(x1)<0.4 && abs(y1)<0.4){ fragColor = vec4(body,1.0); }//nose x1 = uv.x - 0.1; y1 = uv.y - 0.2; r = 0.7; if(x1*x1*0.5 + y1*y1*3.0 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//nose x1 = uv.x - 0.1; y1 = uv.y + 0.62; r = 0.7; if(x1*x1*0.5 + y1*y1*3.0 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//nose x1 = uv.x + 0.7; y1 = uv.y + 0.5; r = 0.25; if(x1*x1*5.0 + y1*y1 < r*r){ fragColor = vec4(body,1.0); }//neck x1 = uv.x + 0.7; y1 = uv.y + 0.2; r = 0.35; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(body,1.0); }//head x1 = uv.x + 0.55; y1 = uv.y + 0.15; r = 0.08; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(black,1.0); }//eye x1 = uv.x + 0.57; y1 = uv.y + 0.1; r = 0.09; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(body,1.0); }//eye1 x1 = uv.x + 0.51; y1 = uv.y + 0.4; r = 0.08; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(black,1.0); }//mouth x1 = uv.x + 0.5; y1 = uv.y + 0.37; r = 0.09; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(body,1.0); }//mouth1 x1 = uv.x + 0.7; y1 = uv.y + 0.4; r = 0.1; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(pink,1.0); }//cheek x1 = uv.x + 0.7; y1 = uv.y - 0.4; if(abs(x1)<0.4 && abs(y1)<0.4){ fragColor = vec4(red,1.0); }//hat x1 = uv.x + 0.25; y1 = uv.y - 0.85; r = 0.8; if(3.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//hat x1 = uv.x + 1.15; y1 = uv.y - 0.85; r = 0.8; if(3.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//hat x1 = uv.x + 0.7; y1 = uv.y - 0.7; r = 0.1; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(red,1.0); }//hat x1 = uv.x + 1.1; y1 = uv.y - 0.03; r = 0.03; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(red,1.0); }//hat x1 = uv.x + 0.3; y1 = uv.y - 0.03; r = 0.03; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(red,1.0); }//hat x1 = uv.x + 0.7; y1 = uv.y + 1.0; r = 0.35; if(2.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(red,1.0); }//body x1 = uv.x + 0.5; y1 = uv.y + 0.9; r = 0.05; if(2.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//button x1 = uv.x + 0.55; y1 = uv.y + 0.8; r = 0.05; if(2.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(1.0,1.0,1.0,1.0); }//button x1 = uv.x + 0.55; y1 = uv.y + 0.25; r = 0.03; if(9.0*x1*x1 + y1*y1 < r*r){ fragColor = vec4(lblue,1.0); }//tear x1 = uv.x + 0.55; y1 = uv.y + 0.28; r = 0.02; if(x1*x1 + y1*y1 < r*r){ fragColor = vec4(lblue,1.0); }//tear // Output to screen } ``` #### Ссылка на код https://www.shadertoy.com/view/7s3fDH ## Задание №4 Провести математическую визуализацию своего имени и фамилии на сайте shadertoy.com при помощи неявных функций в пиксельном шейдере. ### Решение задания ```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.5; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.48; y1 = uv.y - 0.71; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.45; y1 = uv.y - 0.76; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.43; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.41; y1 = uv.y - 0.84; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.38; y1 = uv.y - 0.89; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.36; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } //л x1 = uv.x + 1.3; y1 = uv.y - 0.81; if(abs(x1)<0.01 && abs(y1)<0.1){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.31; y1 = uv.y - 0.71; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.25; y1 = uv.y - 0.9; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.21; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } //ь x1 = uv.x + 1.15; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.1; y1 = uv.y - 0.7; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.1; y1 = uv.y - 0.8; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 1.06; y1 = uv.y - 0.75; if(abs(x1)<0.01 && abs(y1)<0.05){ fragColor = vec4(black,1.0); } //я x1 = uv.x + 1.0; y1 = uv.y - 0.86; if(abs(x1)<0.01 && abs(y1)<0.05){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.95; y1 = uv.y - 0.9; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.9; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.95; y1 = uv.y - 0.82; if(abs(x1)<0.05 && 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.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.94; y1 = uv.y - 0.76; if(abs(x1)<0.01 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.96; y1 = uv.y - 0.72; if(abs(x1)<0.01 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.98; y1 = uv.y - 0.7; if(abs(x1)<0.01 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } //м x1 = uv.x + 0.7; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.67; y1 = uv.y - 0.89; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.65; y1 = uv.y - 0.85; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.62; y1 = uv.y - 0.81; if(abs(x1)<0.01 && abs(y1)<0.04){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.59; y1 = uv.y - 0.85; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.56; y1 = uv.y - 0.89; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.54; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } //е x1 = uv.x + 0.48; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.42; y1 = uv.y - 0.9; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.42; y1 = uv.y - 0.7; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.42; y1 = uv.y - 0.8; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } //д x1 = uv.x + 0.30; y1 = uv.y - 0.72; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.24; y1 = uv.y - 0.74; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.18; y1 = uv.y - 0.72; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.28; y1 = uv.y - 0.83; if(abs(x1)<0.01 && abs(y1)<0.08){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.20; y1 = uv.y - 0.83; if(abs(x1)<0.01 && abs(y1)<0.08){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.24; y1 = uv.y - 0.90; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } //и x1 = uv.x + 0.12; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.10; y1 = uv.y - 0.71; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.07; y1 = uv.y - 0.76; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.05; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x + 0.03; y1 = uv.y - 0.84; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } x1 = uv.x; y1 = uv.y - 0.89; if(abs(x1)<0.02 && abs(y1)<0.02){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.02; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } //н x1 = uv.x - 0.08; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.14; y1 = uv.y - 0.8; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.2; y1 = uv.y - 0.8; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } //е x1 = uv.x - 0.26; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.32; y1 = uv.y - 0.9; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.32; y1 = uv.y - 0.7; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.32; y1 = uv.y - 0.8; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } //ц x1 = uv.x - 0.42; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.48; y1 = uv.y - 0.7; if(abs(x1)<0.05 && abs(y1)<0.01){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.54; y1 = uv.y - 0.80; if(abs(x1)<0.01 && abs(y1)<0.11){ fragColor = vec4(black,1.0); } x1 = uv.x - 0.56; y1 = uv.y - 0.68; if(abs(x1)<0.01 && abs(y1)<0.03){ fragColor = vec4(black,1.0); } } ``` #### Ссылка на код https://www.shadertoy.com/view/fddfD8