private void ApplicaCorrettrice(List<float> zero, List<float> polo, List<float> zeri, List<float> poli, List<float> zeripolipositivi, float k, float xmin) { Bode correttrice = new Bode(0, false, zero, polo, new List<float>(), pic1.Width, pic1.Height, xmin); correttrice.SetImgPerGrafico(this.imgGraficoBaseModulo); this.imgGraficoBaseModulo = correttrice.GraficoModulo(Color.Green); pic1.Image = this.imgGraficoBaseModulo; correttrice.SetImgPerGrafico(this.imgGraficoBaseFase); this.imgGraficoBaseFase = correttrice.GraficoFase(Color.Green); pic2.Image = imgGraficoBaseFase; //Applico anticipatrice/correttrice poli.Add(polo[0]); //Aggiungo il primo (ovvero l'unico) elemento della lista polo alla lista poli zeri.Add(zero[0]); //Faccio la medesima cosa correttrice = new Bode(k, checkK.Checked, zeri, poli, zeripolipositivi, pic1.Width, pic1.Height, xmin); correttrice.SetImgPerGrafico(this.imgGraficoBaseModulo); pic1.Image = correttrice.GraficoModulo(Color.Red); correttrice.SetImgPerGrafico(this.imgGraficoBaseFase); pic2.Image = correttrice.GraficoFase(Color.Red); }
private void btnCalcola_Click(object sender, EventArgs e) { List<float> zeri = new List<float>(); List<float> poli = new List<float>(); List<float> zeripolipositivi = new List<float>(); if ((txtK.Text.Equals("")) || (txtMin.Text.Equals(""))) { MessageBox.Show("k e x di inizio grafico, sono campi obbligatori!"); return; } //Carico gli zeri txtZeri.Text = txtZeri.Text.Replace('.', ','); List<String> tmp = txtZeri.Text.Split(';').ToList<String>(); foreach (String numero in tmp) { if (!(numero.Equals(""))) { zeri.Add(float.Parse(numero)); } } //Carico i poli txtPoli.Text = txtPoli.Text.Replace('.', ','); tmp = txtPoli.Text.Split(';').ToList<String>(); foreach (String numero in tmp) { if (!(numero.Equals(""))) { poli.Add(float.Parse(numero)); } } //Carico gli zeri e i poli a parte reale positiva txtZPpositivi.Text = txtZPpositivi.Text.Replace('.', ','); tmp = txtZPpositivi.Text.Split(';').ToList<String>(); foreach (String numero in tmp) { if (!(numero.Equals(""))) zeripolipositivi.Add(float.Parse(numero)); } //Disegno bode normale txtMin.Text = txtMin.Text.Replace('.', ','); float k = float.Parse(txtK.Text); float xmin = float.Parse(txtMin.Text); Bode bode = new Bode(k, checkK.Checked, zeri, poli, zeripolipositivi, pic1.Width, pic1.Height, xmin); this.imgGraficoBaseModulo = bode.GraficoModulo(); bode.ResetGrafico(); this.imgGraficoBaseFase = bode.GraficoFase(); pic1.Image = this.imgGraficoBaseModulo; pic2.Image = this.imgGraficoBaseFase; if ((txtM.Text.Equals("")) || (txtTau.Text.Equals("")) || (txtTau.Text.Equals("0"))) return; txtM.Text = txtM.Text.Replace('.', ','); txtTau.Text = txtTau.Text.Replace('.', ','); float tau = float.Parse(txtTau.Text); List<float> zero = new List<float>(); zero.Add((float)Math.Round(1 / tau, 4)); //Calcolo zero anticipatrice List<float> polo = new List<float>(); polo.Add((float)Math.Round(float.Parse(txtM.Text) / tau, 4)); //Calcolo polo anticipatrice if (cmbTipo.Text.Equals("Anticipatrice")) { //Disegno anticipatrice ApplicaCorrettrice(zero, polo, zeri, poli, zeripolipositivi, k, xmin); } else if (cmbTipo.Text.Equals("Attenuatrice")) { //Disegno attenuatrice ApplicaCorrettrice(polo, zero, zeri, poli, zeripolipositivi, k, xmin); //Per ottenere l'attenuatrice inverto il polo e lo zero dell'anticipatrice } }