Блок управления СЖО-5

Вместо сухих цифр в блоке СДК захоетлось немного наглядности выполняемых функций данным блоком. Решил сделать визуальный мониторинг данного блока.

Для начала делаем набросок того что из себя представлят СЖО

Вся система образно состоит из пяти компонентов, 

1. УМы блоки усилителей которые охлаждаются принудительной проточкой охлаждающей жидкостью

2. НАСОС обеспечивает циркуляцию охл жидкости по системе

3. ТРЕХХОДОВЫЙ клапан - осуществляет переключение контуров МАЛЫЙ-БОЛЬШОЙ

4. ОХЛАДИТЕЛЬ - охлаждает нагретую УМами охл жидкость

 

Далее делаю набросок-шаблон:

незаштрихованная область это охл жидкость, её мы будем анимировать, что бы иметь визуальное представление того, какой процесс и где происходит.

 

В PhotoShop`е быстро набрасал статичный шаблон:

По прозрачной области будет визуально циркулировать вода. Саму воду будем эмитировать движением каких ни будь частичек по заранее прорисованной траектории:

Это будет у нас верхняя часть движения охл жидкости.

 

Средняя траектория движения охл жидкости.

 

Создаём пока частичку воды obj_blog:

/// @description CREATE
//Site:   MidaDev.ru
//Author: Dimusikus

x_old = x;
y_old = y;
speedik = 100;
color=c_white;
color1=c_white; //цвет первой трети пути
color2=c_white; //цвет второй трети пути
color3=c_white; //цвет третей трети пути
//запуск движения по траектории
function initial_fluid(_path)
{
	path_start(_path, speedik/50, path_action_restart, false);
	path_position = random(1);
}

/// @description STEP
//Site:   MidaDev.ru
//Author: Dimusikus
//изменение цвета частичек в зависимости от пройденного пути
if path_position<(1/3) then color = color1;
else if path_position<((1/3)*2) then color = color2;
else color = color3;


/// @description DRAW
//Site:   MidaDev.ru
//Author: Dimusikus
//отрисовка частицы
draw_circle_color(x,y,2,color,color,false);

 

Дальше создаём объект аггрегатор этих частиц obj_blob_aggregator: 

/// @description CREATE
//Site:   MidaDev.ru
//Author: Dimusikus


//x_old = x;y_old = y;path_start(Path2, 4, path_action_restart, false);
fluid_top=[];
fluid_middle=[];
fluid_bottom=[];
randomize();

maxh=18;

//******************************************************************************
xoffset = 85;	//смещение водопровода
yoffset = 320 + 70; //320 это высота path  70 середина водопровода на картинке

for (var i = 0; i < 150; i += 1)
{
	fluid_top[i] = instance_create_depth(xoffset + x + random_range(-maxh,maxh),yoffset + y+ random_range(-maxh,maxh),depth-1,obj_blob);	
	fluid_top[i].color1=c_blue;
	fluid_top[i].color2=c_yellow;
	fluid_top[i].color3=c_red;
	fluid_top[i].speedik=100;
	
	fluid_top[i].initial_fluid(pth_top);
}
instance_create_depth(xoffset + x - maxh,yoffset + y -maxh,depth-1,obj_blob_draw_path).initial_path(pth_top);
instance_create_depth(xoffset + x + maxh,yoffset + y -maxh,depth-1,obj_blob_draw_path).initial_path(pth_top);
instance_create_depth(xoffset + x - maxh,yoffset + y +maxh,depth-1,obj_blob_draw_path).initial_path(pth_top);
instance_create_depth(xoffset + x + maxh,yoffset + y +maxh,depth-1,obj_blob_draw_path).initial_path(pth_top);


//******************************************************************************
xoffset = 695;
yoffset = 275+30;
for (var i = 0; i < 120; i += 1)
{
	fluid_middle[i] = instance_create_depth(xoffset + x + random_range(-maxh,maxh),yoffset + y+ random_range(-maxh,maxh),depth-1,obj_blob);	
	fluid_middle[i].color3=c_blue;
	fluid_middle[i].color2=c_yellow;
	fluid_middle[i].color1=c_red;
	fluid_middle[i].speedik=30;
	
	fluid_middle[i].initial_fluid(pth_middle);
}
instance_create_depth(xoffset + x - maxh,yoffset + y -maxh,depth-1,obj_blob_draw_path).initial_path(pth_middle);
instance_create_depth(xoffset + x + maxh,yoffset + y -maxh,depth-1,obj_blob_draw_path).initial_path(pth_middle);
instance_create_depth(xoffset + x - maxh,yoffset + y +maxh,depth-1,obj_blob_draw_path).initial_path(pth_middle);
instance_create_depth(xoffset + x + maxh,yoffset + y +maxh,depth-1,obj_blob_draw_path).initial_path(pth_middle);
//******************************************************************************
yoffset = 900;
for (var i = 0; i < 50; i += 1)
{
	fluid_bottom[i] = instance_create_depth(xoffset + x + random_range(-maxh,maxh),yoffset + y+ random_range(-maxh,maxh),depth-1,obj_blob);	
	fluid_bottom[i].color=c_red;
	fluid_bottom[i].color3=c_blue;
	fluid_bottom[i].color2=c_yellow;
	fluid_bottom[i].color1=c_red;
	fluid_bottom[i].speedik=70;
	
	fluid_bottom[i].initial_fluid(pth_bottom);
}

 

В итоге получаем картину следующего вида:

 

По аналогии запиливаем нижнюю часть частиц:

 Итог без отладочных тест линий:

Имитация движения частиц воды завершена, пока каждая частичка это отдельный объект = неразумно, понимаю, в будущем планирую это все перетащить в particle.

 

Далее добавляем специально созданный для этих целей манометр давления ОЖ:
 

 
Начинаем понемногу заводить датчики на экран:



Добавлена инфо о состоянии трёх ходового клапана, состояния работы насоса/насосов, состояние работы усилителей мощности(красный - выкл, салатовый-вкл.).

Далее на очереди добавить уровень жижи в системе и систему обдува охладителя.

 

P.S. 

продолжение следует..........