Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пользовательский интерфейс модуля и инструкция для пользователя
Главным требованием к графическому интерфейсу программного продукта является удобное обеспечение взаимодействия между системой и человеком. Чаще всего в последнее время используются диалоговые окна при работе человека с ЭВМ. Вид окна модуля: Рисунок 3.1- Начальный вид окна модуля
Главное окно программы можно разделить на две части: окно задания параметров, окно вывода расчетного графика. В окне задания параметров мы указываем какие берутся сечения, интервалы между ними, отступ от береговой линии, а также общий расход воды. Код описывающий задание начальных параметров:
Sech(1).name=get(handles.sech1, 'String'); Sech(2).name=get(handles.sech2, 'String'); Sech(3).name=get(handles.sech3, 'String'); Sech(4).name=get(handles.sech4, 'String'); Sech(5).name=get(handles.sech5, 'String'); Sech(6).name=get(handles.sech6, 'String'); Sech(7).name=get(handles.sech7, 'String');
S_MAX=7; for n=1: S_MAX Sech(n).name; end % Name_Uch= ['RES_' Sech(1).name '_' Sech(2).name '.txt']; % % set(handles.txt_Name_Uch, 'String', Name_Uch); % Data_Uch =csvread(Name_Uch); % SIZ_Uch= size(Data_Uch); % % Numm_elem_Uch=numel(Data_Uch); % S1 = Data_Uch(1,:); % S2 = Data_Uch(2,:); % S3 = Data_Uch(3,:); % B_H = S1(1, 1); OMEGA_H =S1(1, 2); T_SRED_H = S1(1, 3); % B_K = S2(1, 1); OMEGA_K =S2(1, 2); T_SRED_K = S2(1, 3); % SREZKA_H= S3(1, 1); SREZKA_K = S3(1, 2); SHEROX= S3(1, 3); % DISTANT =S3(1, 4); F = S3(1, 5); % %set(handles.ed_MODULF, 'String', num2str(F));
%___________ Чтение файлов линий тока ____________
for m=1: S_MAX-1 Name_Tok= ['TOK_' Sech(m).name '_' Sech(m+1).name '.txt']; % Name_Tok= 'TOK_TeST1_TeST2.txt' Data_Tok =csvread(Name_Tok); SIZ_Tok= size(Data_Tok); Numm_elem_Tok=numel(Data_Tok); arBH(m).Tok = Data_Tok(1,:); arBK(m).Tok = Data_Tok(3,:); end NQ= length(arBH(1).Tok)-1; set(handles.ed_N, 'String', num2str(NQ)); % arBH % arBH.Tok % arBK.Tok
Блок, расчитывающий формулу Шези: Q = str2double(get(handles.ed_Q, 'String')); F = str2double(get(handles.ed_MODULF, 'String')); DZ = Q^2*F; set(handles.ed_DZ, 'String', num2str(DZ)); DISTANT = DIST(end); UKLON = (DZ/DISTANT)*1000; set(handles.ed_UKLON, 'String', num2str(UKLON)); DQ = Q/NQ; set(handles.ed_DQ, 'String', num2str(DQ));
График можно представить в двух вариантах: 1) Линейный вывод линий тока. В данном случае линии тока строятся путем соединения прямых линий отдельных участков.
Рисунок 3.1 - Линейный вывод тока Код, описывающий линейный вывод тока: if strcmp(interp_type, 'linear') for k=1: S_MAX-1 for n=NN: NQ if (n==1)|(n==NQ) Col= 'black'; LW=3; else Col= 'blue'; LW = 2; end line([DIST(k) DIST(k+1)], [arBH(k).Tok(n)+REL(k)... arBK(k).Tok(n)+REL(k+1)],... 'LineWidth', LW, 'Color', Col) end end line([DIST], [REL], 'LineWidth', 4, 'Color', 'black') end % AA = [arBH.Tok]; % AA1 =[arBH(1).Tok];
2)Вывод линий тока сплайн. Это геометрическая конструкция, используемая во многих графических программах для создания сложных кривых и поверхностей из множества коротких сегментов, каждый из которых описывается кубическим полиномом. Кубический полином выбран потому, что, в отличие, например, от квадратного, обеспечивает идеально плавное сопряжение кривых, если они соединяются в точках перегиба, т. е. точках с нулевой кривизной. Рисунок 3.2 - Вывод линий тока сплайн Код, описывающий вывод линий тока сплайн: LSS =LinTok+M_REL; plt=0.01; % шаг plot if strcmp(interp_type, 'cubic') for m=NN: NQ X=DIST; Y= LSS(:, m); XX=DIST(1): plt*DIST(end): DIST(end); YY= spline(X, Y, XX);
if(m==1) | (m==NQ) Col='black'; LW =4; else Col='blue'; LW = 2; end %plot(X, Y, 'o', XX, YY, '-', 'LineWidth', 2, 'Color', Col, 'LineWidth', LW) plot(XX, YY, '-', 'LineWidth', 2, 'Color', Col, 'LineWidth', LW) end X=DIST; Y= LSS(:, 1); XX=DIST(1): plt*DIST(end): DIST(end); YY= spline(X, Y, XX); plot(XX, YY, '-', 'LineWidth', 2, 'Color', Col, 'LineWidth', LW)
В качестве дополнительной опции существует функция, которая выводит график без линий тока, а только границы русла реки: Рисунок 3.3 - Вывод графика без линий тока
|