---
# System prepended metadata

title: '**Учебная практика 2022. Четверг 30.06**'

---

#  **Учебная практика 2022. Четверг 30.06**

 Мулярчук Владислава Сергеевна 
 [TOC]
# Отчет проделанной роботы:
#  Присутствовала конференции

# *Задание №1*
 «canvas Графики f(x)»
 Создать хостинге replit.com html приложение, в котором реализовать на языке javascript класс Graph1D, предназначенный для расчета и отрисовки на канве (canvas) графиков вещественных функции



## Cсылка на роботу 
https://replit.com/@Vladislava-Sier/HighlevelWetInstance#script.js
## Код к роботе  к странице javascript
```javascript=
var ctx = my_canvas.getContext('2d');
var x = -10;
var x_min = -10
var x_max = 10;
var y_min = -10;
var y_max = 10;
var X = 0, Y = 0;
var W = 256;
var H = 256;

    function drawGraph() {
   draw();
 for(X=0; X<W; X+=0.05) {
  x = x_min + (x_max-x_min)*X/W;
    let str = formula.value;
     y = eval(str); 
   Y = H*(y-y_max)/(y_min-y_max);
  ctx.fillRect(X, Y, 1,1);
 }
    }

    function draw() {
for(i = 1;i < Math.abs(y_min)+Math.abs(y_max);i++) {  //горизонтальные линии
ctx.moveTo(0, H*(Math.abs(i)/(Math.abs(y_min) + Math.abs(y_max))));
ctx.lineTo(W, H*(Math.abs(i)/(Math.abs(y_min) + Math.abs(y_max))));
ctx.stroke();
  ctx.strokeStyle = "lightgreen";
}
for(i = 1;i < Math.abs(x_min)+Math.abs(x_max);i++) {  //вертикальные линии
ctx.moveTo(W*(Math.abs(i)/(Math.abs(x_min) + Math.abs(x_max))), 0);
ctx.lineTo(W*(Math.abs(i)/(Math.abs(x_min) + Math.abs(x_max))), H);
ctx.stroke();
  ctx.strokeStyle = "lightgreen";
 }
                    
    }


```
# *Задание №5 из файла 1 *
математической визуализацией  Автопортрета в профиль (автопортрет должен быть узнаваем - будет сравниваться с Вашим фото)

## Ссылка на роботу
https://www.shadertoy.com/view/fsdfD7
## Код к роботе
```glsl=1
  float udSegment( in vec2 p, in vec2 a, in vec2 b )
    {
    vec2 pa = p-a;
    vec2 ba = b-a;
     //ограниченое значение между двумя значениями которое считает скалярное произведение двух векторов и делит на другое скалярное произведение
       float h = clamp(dot(pa,ba) / dot(ba,ba), 0.0, 1.0 );
        return length(pa-h*ba);
     }

//из двух точек создаем линию
 
    float lineSegment(in vec2 p1, in vec2 p2, in vec2 sc)
    {
//размер линий
     vec2 relocate = vec2(100., -100.);
      vec2 v1 = vec2( 80.* p1.x, -80. * p1.y);
        v1 += relocate;
      vec2 v2 = vec2(80. * p2.x, -80.0 * p2.y);
        v2 += relocate;
         return udSegment( sc, v2, v1 );
}


void mainImage( out vec4 fragColor, in vec2 fragCoord ) //вывод и ввод
{
    // массив из точок координаты которых взяли с помощью сайта
    
    vec2 points[24];
     points[0]  = vec2(2.4,0.77000);
     points[1]  = vec2(3.03, 0.47000);
     points[2]  = vec2(3.35, 0.16700);
     points[3]  = vec2(3.38 ,-0.40000);
     points[4]  = vec2(3.34 ,-0.62000);
     points[5]  = vec2(3.46 ,-0.92000);
     points[6]  = vec2(3.47 ,-0.99000);
     points[7]  = vec2(3.33, -0.97000);
     points[8]  = vec2(3.34 ,-1.1600);
     points[9]  = vec2(3.28 , -1.1900);
     points[10] = vec2(3.29 ,-1.2600);
     points[11] = vec2(3.22 ,-1.3100);
     points[12] = vec2(3.17, -1.4700);
     points[13] = vec2(3.1 , -1.5300);
     points[14] = vec2(2.67  ,-1.5300);
     points[15] = vec2(2.48, -2.0400);
     points[16] = vec2(1.99 , -1.9700);
     points[17] = vec2(1.4 ,-2.1700);
     points [18] = vec2(1.15 , -2.5700);
     points[19] = vec2(0.94 , -2.5500);
     points [20] = vec2( 1.07 ,-2.0000);
     points [21] = vec2(1.58 , 0.17000);
     points [22] = vec2(2.04 , 0.65000);
     points [23] = vec2(2.4  , 0.73000);
    
    
    vec2 sc = vec2(fragCoord.x, iResolution.y - 2.*fragCoord.y);
    
    vec3 col = vec3(0,0,0);
    //толщина линии
    float thick = 3.;
    
    // соединяем точки  в линии
    for(int i = 1; i < points.length(); ++i){
        float d = lineSegment(points[i-1], points[i], sc) - thick;
            col +=  smoothstep(2.5,0.,d); //находим неизвестные промежуточные значения- интерполяция
    }
      
     fragColor = vec4(col,1.0);
}
```
## Результат и оригинал
![](https://i.imgur.com/3eT470Z.jpg)

![](https://i.imgur.com/jHNwOyv.png)


