/// <summary> /// инициализатор плоттеров для рисования и накидываетль их на форму /// </summary> /// <param name="PlottersCount"></param> /// <param name="LeftTopCorner"></param> /// <param name="sys"></param> public void InitPlotters(int PlottersCount, Point LeftTopCorner, ESystem sys) { //метки панелей PanesLabels = new System.Windows.Forms.Label[PlottersCount + 1]; for (int k = 0; k < PlottersCount + 1; k++) { PanesLabels[k] = new System.Windows.Forms.Label(); PanesLabels[k].Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); } PanesLabels[0].Text = "X"; PanesLabels[1].Text = "U"; PanesLabels[2].Text = "Y"; PanesLabels[3].Text = "F (Quality)"; //Создание панелей Panes = new StackedPlotters[PlottersCount]; int i = 0; Panes[0] = new StackedPlotters(new Point(LeftTopCorner.X, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.x, Color.Green); i = 1; Panes[1] = new StackedPlotters(new Point(LeftTopCorner.X + (100 + 10) * i, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.u, Color.Blue); i = 2; Panes[2] = new StackedPlotters(new Point(LeftTopCorner.X + (100 + 10) * i, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.y, Color.Red); // И панели качества quality = new plotter(new Point(LeftTopCorner.X, LeftTopCorner.Y + 110), new Size(100, 100), Color.Red, sys.current_state.quality_f); }
/// <summary> /// перегружает панели из системы /// </summary> /// <param name="sys"></param> public void LoadPanes(ESystem sys) { Panes[0].LoadPlottersFromSys(sys.current_state.x); Panes[1].LoadPlottersFromSys(sys.current_state.u); Panes[2].LoadPlottersFromSys(sys.current_state.y); quality.LoadPointsFromDouble(sys.current_state.quality_f); quality.SetVisibleRangeAll(); }
public SysInfo(ESystem sys) { this.sys = sys; //пустышка аднака - пустой блок для отображения матриц this.UniversalMatrixBox = new TBMatrixDrawer(new MatrixLibrary.Matrix(10, 10)); UniversalMatrixBox.Visible = false; UniversalMatrixBox.Location = new Point(209, 56); this.Controls.Add(UniversalMatrixBox); InitializeComponent(); }
private void CreateSys() { sys = new ESystem(CreateF1.sys1.current_state); if (sys != null) { //грузим полученный sys в формочку if (SI == null && sys != null)//проверка на открытие файла снова { SI = new SysInfo(sys); } else { SI.UpdateInfo(sys); } //разблокировка элементов this.showStateInfoToolStripMenuItem.Enabled = true; this.startEmulationToolStripMenuItem.Enabled = true; tabControl1.SelectTab(0); if (!debug) { step = 0; } else { step = 4; } tabPage2.Controls.Clear(); tabPage2.Controls.Add(button2); tabPage1.Controls.Clear(); tabPage1.Controls.Add(button1); tabPage1.Controls.Add(label1); tabPage1.Controls.Add(lAnalogEquation); lAnalogEquation.Text = "x'(t) = "; for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++) { if (i != 0) { this.lAnalogEquation.Text += " + "; } this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t"; if (i == 0) { this.lAnalogEquation.Text += ")"; } else { this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")"; } } for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++) { this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t"; if (i == 0) { this.lAnalogEquation.Text += ")"; } else { this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")"; } } UniversalMatrixBox = new List <MatrixDrawer>(); LabelList = new List <System.Windows.Forms.Label>(); int loctemp = 20; int j = 0; for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++) { MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)); this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10))); this.LabelList.Add(new System.Windows.Forms.Label()); UniversalMatrixBox[i].Visible = false; UniversalMatrixBox[i].Location = new Point(loctemp, 130); this.LabelList[i].Location = new Point(loctemp, 115); this.LabelList[i].Font = new Font(this.Font, FontStyle.Bold); this.tabPage1.Controls.Add(UniversalMatrixBox[i]); this.tabPage1.Controls.Add(LabelList[i]); if (i < sys.current_state.analog_A()[0].Count) { this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]); this.LabelList[i].Text = "Ан" + i.ToString() + ": "; } else { this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]); this.LabelList[i].Text = "Bн" + j.ToString() + ": "; j++; } UniversalMatrixBox[i].Visible = true; loctemp += UniversalMatrixBox[i].Size.Width + 20; } button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height); button1.Visible = true; } }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { //отлавливаем исключения инициализации try { //загрузка sys из файла sys = GUI.OpenJsonFile(isSpline, isNoiseEnabled); } catch (Exception excption) //если при определении следующего шага чтото пошло нетак { MessageBox.Show(excption.Message + "\n" + excption.StackTrace.ToString(), "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); //вываливаем сообщение } //если файл был успешно загружен if (sys != null) { //грузим полученный sys в формочку if (SI == null && sys != null)//проверка на открытие файла снова { SI = new SysInfo(sys); } else { SI.UpdateInfo(sys); } //разблокировка элементов this.showStateInfoToolStripMenuItem.Enabled = true; this.startEmulationToolStripMenuItem.Enabled = true; tabControl1.SelectTab(0); if (!debug) { step = 0; } else { step = 4; } tabPage2.Controls.Clear(); tabPage2.Controls.Add(button2); tabPage1.Controls.Clear(); tabPage1.Controls.Add(button1); tabPage1.Controls.Add(label1); tabPage1.Controls.Add(lAnalogEquation); lAnalogEquation.Text = "x'(t) = "; for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++) { if (i != 0) { this.lAnalogEquation.Text += " + "; } this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t"; if (i == 0) { this.lAnalogEquation.Text += ")"; } else { this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")"; } } for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++) { this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t"; if (i == 0) { this.lAnalogEquation.Text += ")"; } else { this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")"; } } UniversalMatrixBox = new List <MatrixDrawer>(); LabelList = new List <System.Windows.Forms.Label>(); int loctemp = 20; int j = 0; for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++) { MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)); this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10))); this.LabelList.Add(new System.Windows.Forms.Label()); UniversalMatrixBox[i].Visible = false; UniversalMatrixBox[i].Location = new Point(loctemp, 130); this.LabelList[i].Location = new Point(loctemp, 115); this.LabelList[i].Font = new Font(this.Font, FontStyle.Bold); this.tabPage1.Controls.Add(UniversalMatrixBox[i]); this.tabPage1.Controls.Add(LabelList[i]); if (i < sys.current_state.analog_A()[0].Count) { this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]); this.LabelList[i].Text = "Ан" + i.ToString() + ": "; } else { this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]); this.LabelList[i].Text = "Bн" + j.ToString() + ": "; j++; } UniversalMatrixBox[i].Visible = true; loctemp += UniversalMatrixBox[i].Size.Width + 20; } button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height); button1.Visible = true; } }
public ViewerG(ESystem sys) { this.sys = sys; DrawMatrix(); InitializeComponent(); }
public void UpdateInfo(ESystem sys) { DrawMatrix(); }
//обновление информации на форме public void UpdateInfo(ESystem sys) { this.sys = sys; //обновление типа системы if (sys.current_state.stationarity) { Stationarity.ForeColor = Color.Green; } else { Stationarity.ForeColor = Color.Red; } if (sys.current_state.synchronism) { this.Syncronism.ForeColor = Color.Green; } else { Syncronism.ForeColor = Color.Red; } if (sys.current_state.delay_by_state) { this.delay_by_state.ForeColor = Color.Green; } else { delay_by_state.ForeColor = Color.Red; } if (sys.current_state.delay_by_control) { this.delay_by_control.ForeColor = Color.Green; } else { delay_by_control.ForeColor = Color.Red; } if (sys.current_state.full_controllability) { this.full_controllability.ForeColor = Color.Green; } else { full_controllability.ForeColor = Color.Red; } if (sys.current_state.part_controllability) { this.part_controllability.ForeColor = Color.Green; } else { part_controllability.ForeColor = Color.Red; } if (sys.current_state.full_observersability) { this.full_observability.ForeColor = Color.Green; } else { full_observability.ForeColor = Color.Red; } if (sys.current_state.part_observersability) { this.part_observability.ForeColor = Color.Green; } else { part_observability.ForeColor = Color.Red; } if (sys.current_state.determinancy) { this.Determinancy.ForeColor = Color.Green; } else { Determinancy.ForeColor = Color.Red; } if (sys.current_state.perturbation) { this.Perturbation.ForeColor = Color.Green; } else { Perturbation.ForeColor = Color.Red; } //строчичка с размерами this.Sizes.Text = "n = " + sys.current_state.n + " m = " + sys.current_state.m + " p = " + sys.current_state.p + " a = " + sys.current_state.a + " c = " + sys.current_state.c; //протирка матриц.. а ВДРУК! //скрываем все, что было до этого UniversalMatrixBox.Visible = false; this.TimeBox.Enabled = false; this.TimeBox.Items.Clear(); this.DelayBox.Enabled = false; this.DelayBox.Items.Clear(); this.LoadMatrix.Enabled = false; }
private void Done_button1_Click(object sender, EventArgs e) { try { List <Matrix> tmp; Matrix tmpM; int J; if (a > c) { J = a + 1; } else { J = c + 1; } if (debug) { x = new List <Matrix>(); for (int i = 0; i < J * 2; i++) { tmpM = new Matrix(n, 1); for (int j = 0; j < n; j++) { tmpM[j, 0] = 1; } x.Add(tmpM); } u = new List <Matrix>(); for (int i = 0; i < J * 2; i++) { tmpM = new Matrix(m, 1); for (int j = 0; j < m; j++) { tmpM[j, 0] = 0; } u.Add(tmpM); } } A = new List <List <Matrix> >(); tmp = new List <Matrix>(); for (int i = 0; i <= a; i++) { tmp.Add(new Matrix(n, n)); for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { tmp[i][j, k] = Convert.ToDouble(MatrixBoxListA[i].getVal(j, k)); } } } A.Add(tmp); B = new List <List <Matrix> >(); tmp = new List <Matrix>(); for (int i = 0; i <= c; i++) { tmp.Add(new Matrix(n, m)); for (int j = 0; j < n; j++) { for (int k = 0; k < m; k++) { tmp[i][j, k] = Convert.ToDouble(MatrixBoxListB[i].getVal(j, k)); } } } B.Add(tmp); H = new List <Matrix>(); H.Add(new Matrix(p, n)); for (int j = 0; j < p; j++) { for (int k = 0; k < n; k++) { H[0][j, k] = Convert.ToDouble(MatrixBoxListH[0].getVal(j, k)); } } tau = new List <double>(); tau.Add(0); for (int i = 0; i < a; i++) { tau.Add(Convert.ToDouble(TextBoxListTau[i].Text)); } teta = new List <double>(); teta.Add(0); for (int i = 0; i < c; i++) { teta.Add(Convert.ToDouble(TextBoxListTeta[i].Text)); } List <Matrix> Fi = new List <Matrix>(); if (debug) { Fi.Add(new Matrix(Matrix.Identity(n))); } List <Matrix> Psi = new List <Matrix>(); if (debug) { Psi.Add(new Matrix(Matrix.Identity(m))); } if (Tu <= 0 && Tx > 0)//если задали только Tx { Tu = Tx; } if (Tx <= 0 && Tu > 0)//а если только Tu { Tx = Tu; } if (Tu <= 0 || Tx <= 0)//и если оне по-прежнему некорректны... { Tx = Tu = 1; } Boolean new_determinancy = true; Boolean new_perturbation = false; State newState = new State( x, u, A, B, H, tau, teta, Fi, Psi, Tx, Tu, FlagStationary.Checked, new_determinancy, new_perturbation); newState.isRandomEffect = false; newState.isSplainAppr = false; sys1 = new ESystem(newState); this.Close(); } catch (Exception ex) { MessageBox.Show(this, ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } }