# Учебная практика. Среда 30.06.2021. Чачко Натан Леонидович 1. Присутствовал на лекции в ZOOM. 2. Дополнил [страницу на Replit](https://replit.com/@Natanius18/Natan-Chachko#index.html). 3. Сделал [шейдер свое имя](https://www.shadertoy.com/view/ftlSzn) (пока что только имя): ```javascript= float Q(float x, float y, float r) { return max(abs(x),abs(y)) - r ; } mat2 rotate(float angle) { return mat2(cos(angle),-sin(angle), sin(angle),cos(angle)); } float N(vec2 p, float ax, float ay) { float c = Q((p.x - ax - 0.06) * 1.1, (p.y + ay) / 7.5, 0.035) * 100.0; c = min(c, Q((p.x - ax + 0.1) * 1.1, (p.y + ay) / 7.5, 0.035) * 100.0); vec2 pos = rotate(radians(-.0)) * p; c = min(c, Q((pos.x - 0.59) / 2., pos.y + 0.5, 0.045) * 100.0); return c; } float N2(vec2 p, float ax, float ay) { float c = Q((p.x - ax - 0.06) * 1.1, (p.y + ay) / 7.5, 0.035) * 100.0; c = min(c, Q((p.x - ax + 0.1) * 1.1, (p.y + ay) / 7.5, 0.035) * 100.0); vec2 pos = rotate(radians(-.0)) * p; c = min(c, Q((pos.x + 0.67) / 2., pos.y + 0.5, 0.045) * 100.0); return c; } float T(vec2 p, float ax, float ay) { float c = Q((p.x - ax - 0.06) * 1.5, (p.y + ay) / 7.3, 0.035) * 100.0; vec2 pos = rotate(radians(.0)) * p; c = min(c, Q((pos.x + 0.045) / 3., pos.y + 0.7, 0.04) * 100.0); return c; } float A(vec2 p, float ax1, float ay1, float ax2, float ay2) { vec2 pos = rotate(radians(-80.0)) * p; float c = Q((pos.x + ax1) / 9.0, pos.y + ay1, 0.03) * 100.0; pos = rotate(radians(80.0)) * p; c = min(c, Q((pos.x + ax2) / 9.0, pos.y + ay2, 0.03) * 100.0); c = min(c, Q((p.x - 0.25) / 1.8, p.y + 0.47, 0.035) * 100.0); return c; } float A2(vec2 p, float ax1, float ay1, float ax2, float ay2) { vec2 pos = rotate(radians(-80.0)) * p; float c = Q((pos.x + ax1) / 9.0, pos.y + ay1, 0.03) * 100.0; pos = rotate(radians(80.0)) * p; c = min(c, Q((pos.x + ax2) / 9.0, pos.y + ay2, 0.03) * 100.0); c = min(c, Q((p.x + 0.32) / 1.8, p.y + 0.47, 0.035) * 100.0); return c; } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 p = 1.0 - 2.0 * fragCoord/iResolution.xy; float c = N(p, 0.6, 0.5); c = min(c, A(p, -0.52, -0.1, 0.43, 0.38)); c = min(c, T(p, -.1, .5)); c = min(c, A2(p, -0.43, 0.46, 0.54, -0.18)); c = min(c, N2(p, -0.65, 0.5)); vec3 pic = vec3(1., .0, .1)*(-c); fragColor = vec4(pic, 1.0); pic.g = cos(iTime/1.0); pic.b = sin(iTime/2.3); fragColor = vec4(pic,1.0); } ``` 4. Пытался сделать [свой портрет](https://www.shadertoy.com/view/stfXzn), но пока что не закончил. Столкнулся со сложностью вырисовки с помощью треугольников. Вот какие этапы прошел: ![](https://i.imgur.com/eLG85JZ.jpg) *Оригинальная фотография* ![](https://i.imgur.com/l3YYcUS.jpg) *Первая попытка обвести контур* ![](https://i.imgur.com/HovogZB.jpg) *Более подробный контур* 5. Сделал [смешарика](https://www.shadertoy.com/view/stlXzr), но нужно разобраться еще, как менять цвет разных элементов по отдельности, чтоб закончить глаза красиво. И еще хочу наклонить руки, тоже нужно будет доделать этот момент. > **Вывод:** очень большой объем материала, довольно тяжело делать все задания сразу за один день. Очень хочу научиться использовать разные цвета для разных элементов и доделать портрет до узнаваемого состояния. > Отдельное спасибо преподавателю за лекцию, было полезно и существенно помогло в выполнении и самое главное — понимании заданий.