---
# System prepended metadata

title: Учебная практика. Среда 30.06.2021. Чачко Натан Леонидович

---

# Учебная практика. Среда 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), но нужно разобраться еще, как менять цвет разных элементов по отдельности, чтоб закончить глаза красиво. И еще хочу наклонить руки, тоже нужно будет доделать этот момент.
 
 
> **Вывод:** очень большой объем материала, довольно тяжело делать все задания сразу за один день. Очень хочу научиться использовать разные цвета для разных элементов и доделать портрет до узнаваемого состояния.
> Отдельное спасибо преподавателю за лекцию, было полезно и существенно помогло в выполнении и самое главное — понимании заданий.




