---
# System prepended metadata

title: Учебная практика 2022. Отчет за 28.06.2022. Лазаренко Дарья Геннадьевна. Первая группа.

---

# Учебная практика 2022. Отчет за 28.06.2022. Лазаренко Дарья Геннадьевна. Первая группа. 
[TOC]
## Задание 3

Cсылки на сайт shadertoy.com c реализованной Вами с помощью неявных функций в пиксельном шейдере (адаптированный вариант использования языка GLSL) - математическая реализация Буратино(пока с условными операторами if).

### Решение

Задание было выполнено. Решение доступно по [ссылке](https://www.shadertoy.com/view/7dtBD8).

Код решения:
```glsl=1
bool circle(vec2 p, vec2 o, float r) {
        float scaleY = iResolution.y / iResolution.x;
        return (p.x - o.x) * (p.x - o.x) + (p.y - o.y) * (p.y - o.y) * (scaleY * scaleY) < r*r; 
  }
    bool triangle(vec2 v, vec2 a,float s,float g) {
        float x = v.x - a.x,
        y = v.y - a.y;
      if (y>x*s && y>x*(-s) && y<g) {
        return true;
    } else return false;
  }
  
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
 // Normalized pixel coordinates (from 0 to 1)
 vec2 uv = fragCoord/iResolution.xy;
 float x = uv.x;
 float y = uv.y;
 
 vec2 uv_  = 1.0-2.0*fragCoord/iResolution.xy;
    float x_ = uv_.x;
    float y_ = uv_.y;
   
 fragColor = vec4(0.8, 0.8, 0.8, 1.0);
 
 //head 
  if (circle(vec2(x, y), vec2(0.4, 0.625), 0.09))
     fragColor = vec4(0.9, 0.9, 0.7, 1.0);
     
  if (circle(vec2(x, y), vec2(0.37, 0.55), 0.02))
     fragColor = vec4(1, 0.3, 0.3, 1.0);
     
  if (circle(vec2(x, y), vec2(0.43, 0.65), 0.015))
     fragColor = vec4(0, 0, 0, 1.0);
  
  if (circle(vec2(x, y), vec2(0.428, 0.659), 0.015))
     fragColor = vec4(0.9, 0.9, 0.7, 1.0);
     
  if (circle(vec2(x, y), vec2(0.442, 0.5), 0.01))
     fragColor = vec4(0, 0, 0, 1.0);
  
  if (circle(vec2(x, y), vec2(0.4445, 0.505), 0.0105))
     fragColor = vec4(0.9, 0.9, 0.7, 1.0);
     
  if (((y_+0.2)<(x_+0.2)/10.0)&&((y_+0.2)>(x_+0.2)/(-10.0))&&((x_+0.2)<0.3)) { //nose
             fragColor = vec4(0.9, 0.9, 0.7, 1.0);
   }
           
 //hat
  if (circle(vec2(x, y), vec2(0.4, 0.97), 0.015))
     fragColor = vec4(0.7, 0, 0, 1.0);
  
  if(triangle(vec2(0.4, 0.99), uv, 5.0, 0.25))
        fragColor = vec4(0.7, 0, 0, 1);
  
  if (circle(vec2(x, y), vec2(0.445, 0.765), 0.015))
     fragColor = vec4(0.7, 0, 0, 1.0);
     
  if (circle(vec2(x, y), vec2(0.44, 0.765), 0.015))
     fragColor = vec4(0.7, 0, 0, 1.0);
     
  if (circle(vec2(x, y), vec2(0.35, 0.765), 0.015))
     fragColor = vec4(0.7, 0, 0, 1.0);
     
  if (circle(vec2(x, y), vec2(0.355, 0.765), 0.015))
     fragColor = vec4(0.7, 0, 0, 1.0);
     
  // body
  if ((abs(x_-0.2)<0.043)&&(abs(y_-0.1)<0.1)) //neck
        fragColor = vec4(0.9, 0.9, 0.7, 1.0);
        
  if ((x_-0.2)*(x_-0.2)*9.0+(y_-1.0)*(y_-1.0) < 0.8 * 0.8) //main body
        fragColor = vec4(0.7, 0, 0, 1.0);
        
  if (circle(vec2(x, y), vec2(0.48, 0.25), 0.02))
        fragColor = vec4(1, 1, 1, 1.0);
        
  if (circle(vec2(x, y), vec2(0.5, 0.15), 0.02))
        fragColor = vec4(1, 1, 1, 1.0);
        
  if ((abs(x_-0.2)<0.05)&&(abs(y_-0.75)<0.25)) //arm
        fragColor = vec4(0.9, 0, 0, 1.0);
        
  if (circle(vec2(x, y), vec2(0.4, 0.24), 0.025))
        fragColor = vec4(0.9, 0, 0, 1.0);
}
```

Изображение, которое будет показано при компиляции:

![](https://i.imgur.com/pbBDNUA.jpg)

## Дополнительно

Исправлена HTML-страница из Задания 1, доступна по [ссылке](https://replit.com/@DariaLazarenko1/practice-task-1#index.html). Изменения: я добавила ссылки на математические реализации Буратино и Лошарика в shadertoy.com, а также изображения с результатом работы программы.
