private void BuildHarmGraph() { signal = (Signal)comboBoxSignalType.SelectedIndex; try { chart1.Series.Remove(DataSer); } finally { DataSer = new System.Windows.Forms.DataVisualization.Charting.Series(); HarS = new System.Windows.Forms.DataVisualization.Charting.Legend(); DataSer.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; DataSer.Color = Color.Red; HarS.Name = "Harmonic signal"; HarS.Title = "Harmonic signal"; //chart1.Legends.Add(HarS); int N = 1024; A = (double)trackBar2.Value; f = (double)trackBar3.Value; phi = (double)trackBar1.Value; double Q = 0.25; label4.Text = Convert.ToString(trackBar2.Value); label5.Text = Convert.ToString(trackBar3.Value); label6.Text = Convert.ToString(trackBar1.Value); if (signal == Signal.rectangle) { DataSer.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StepLine; } IWaveForm instance = null; switch (signal) { case Signal.syn: { instance = new SynForm(A, f, phi); break; } case Signal.rectangle: { instance = new RectangleForm(A, f, phi, Q); break; } case Signal.triangle: { instance = new TriangleForm(A, f, phi); break; } case Signal.saw: { instance = new SawForm(A, f, phi); break; } } for (int n = 1; n <= N - 1; n++) { switch (signal) { case Signal.rectangle: { DataSer.Points.AddXY((double)n / N, instance.GetPointsForWave(N, n, noize ? NoizeStep : 0)); break; } default: { DataSer.Points.AddXY(n, instance.GetPointsForWave(N, n, noize ? NoizeStep : 0)); break; } } } } chart1.ResetAutoValues(); chart1.Series.Add(DataSer); }
private void BuildPolyHarmGraph(object sender, EventArgs e) { signal = (Signal)comboBoxSignalType.SelectedIndex; try { chart1.Series.Remove(DataSer); } finally { for (int i = 0; i <= 14; i++) { if (comboBox5.SelectedIndex * 3 == i) { phc[i] = (double)trackBar1.Value; } if (comboBox5.SelectedIndex * 3 + 1 == i) { phc[i] = (double)trackBar3.Value; } if (comboBox5.SelectedIndex * 3 + 2 == i) { phc[i] = (double)trackBar2.Value; } // lbLst[i].Text = Convert.ToString(trLst[i].Value); //phc[i] = trLst[i].Value; } label4.Text = Convert.ToString(trackBar2.Value); label5.Text = Convert.ToString(trackBar3.Value); label6.Text = Convert.ToString(trackBar1.Value); DataSer = new System.Windows.Forms.DataVisualization.Charting.Series(); HarS = new System.Windows.Forms.DataVisualization.Charting.Legend(); DataSer.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; DataSer.Color = Color.Red; HarS.Name = "Harmonic signal"; HarS.Title = "Harmonic signal"; double Q = 0.5; IWaveForm[] arrWaves = new IWaveForm[5]; for (int i = 0; i < 5; i++) { switch (signal) { case Signal.syn: { arrWaves[i] = new SynForm(phc[i * 3 + 2], phc[i * 3 + 1], phc[i * 3]); break; } case Signal.rectangle: { arrWaves[i] = new RectangleForm(phc[i * 3 + 2], phc[i * 3 + 1], phc[i * 3], Q); break; } case Signal.triangle: { arrWaves[i] = new TriangleForm(phc[i * 3 + 2], phc[i * 3 + 1], phc[i * 3]); break; } default: { arrWaves[i] = new SawForm(phc[i * 3 + 2], phc[i * 3 + 1], phc[i * 3]); break; } } } double t = 0; int N = 1024; if (signal == Signal.rectangle) { DataSer.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StepLine; } for (int n = 1; n <= N - 1; n++) { //создать 5 объектов с разеными параметрами и по очерелди их перебиратьъ double res = 0; //res = WaveBase.GetPointsForWave(N, n, noize ? NoizeStep : 0); for (int k = 0; k < 5; k++) { // tarrWaves[0].Amplitude t = arrWaves[k].GetPointsForWave(N, n, noize ? NoizeStep : 0); //t= (phc[k*3 + 2]) * Math.Sin(2 * Math.PI * (phc[k*3 + 1]) * n / N + (double)(phc[k*3]) / 180 * Math.PI); // double t = (3 * phc[k * 3 + 2]) * Math.Sin(2 * Math.PI * (3 * phc[k * 3 + 1]) * n / N + (double)(3 * phc[k * 3]) / 180 * Math.PI); res += t; } if (signal == Signal.rectangle) { DataSer.Points.AddXY((double)n / N, res); } else { DataSer.Points.AddXY(n, res); } } } chart1.ResetAutoValues(); chart1.Series.Add(DataSer); }