private void btnGraficar_Click(object sender, RoutedEventArgs e) { double tiempoInicial = double.Parse(txtTiempoInicial.Text); double tiempoFinal = double.Parse(txtTiempoFinal.Text); double frecuenciaMuestreo = double.Parse(txtFrecuenciaMuestreo.Text); Señal señal; switch (cbTipoSeñal.SelectedIndex) { //Senoidal case 0: double amplitud = double.Parse( ((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtAmplitud.Text); double fase = double.Parse( ((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtFase.Text); double frecuencia = double.Parse( ((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtFrecuencia.Text); señal = new SeñalSenoidal(amplitud, fase, frecuencia); break; //Rampa case 1: señal = new SeñalRampa(); break; case 2: double alpha = double.Parse( ((ConfiguracionSeñalExponencial)panelConfiguracion.Children[0]).txtAlpha.Text); señal = new SeñalExponencial(alpha); break; default: señal = null; break; } //Establacer los valores que va usar la clase antes de que la llame. señal.TiempoInicial = tiempoInicial; señal.TiempoFinal = tiempoFinal; señal.FrecuenciaMuestreo = frecuenciaMuestreo; señal.construirSeñalDigital(); plnGrafica.Points.Clear(); //Escalar double factorEscala = double.Parse(txtfactorEscalaAmplitud.Text); if (checkboxEscalaAmplitud.IsChecked == true) { señal.escalar(factorEscala); } else if (checkboxEscalaAmplitud.IsChecked == false) { factorEscala = 1; señal.escalar(factorEscala); } //Desplazar double desplazamientoValor = double.Parse(txtDesplazamientoEnY.Text); if (checkboxDesplazamientoY.IsChecked == true) { señal.desplazar(desplazamientoValor); } else if (checkboxDesplazamientoY.IsChecked == false) { desplazamientoValor = 0; señal.desplazar(desplazamientoValor); } //Truncar if (checkboxUmbral.IsChecked == true) { double umbralValor = double.Parse(txtUmbral.Text); señal.truncar(umbralValor); } //Potencia if (checkboxPotencia.IsChecked == true) { double potenciaValor = double.Parse(txtPotencia.Text); señal.potencia(potenciaValor); } //Amplitud señal.actualizarAmplitudMaxima(); if (señal != null) { //Recorrer una coleccion o arreglo, solo sirve cuando quieres recorrer todos los elementos. //Por cada iteracion se guardara un elemento conforme a la coleccion. (FOREACH) //Declarar la variable del tipo de dato que va recorrer foreach (Muestra muestra in señal.Muestras) { plnGrafica.Points.Add(new Point((muestra.X - tiempoInicial) * scrContenedor.Width, (muestra.Y / señal.AmplitudMaxima) * (((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2)) ); } } //EJE X plnEjex.Points.Clear(); //Punto de Principio plnEjex.Points.Add(new Point(0, (scrContenedor.Height / 2))); //Punto del fin plnEjex.Points.Add(new Point((tiempoFinal - tiempoInicial) * scrContenedor.Width, (scrContenedor.Height / 2))); // //EJE Y plnEjey.Points.Clear(); //Punto de Principio plnEjey.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, señal.AmplitudMaxima * (((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); //Punto del fin plnEjey.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, -señal.AmplitudMaxima * (((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); // lblAmplitudMaximaY.Text = señal.AmplitudMaxima.ToString(); lblAmplitudMazimaNegativaY.Text = "-" + señal.AmplitudMaxima.ToString(); }
private void btnGraficar_Click(object sender, RoutedEventArgs e) { double tiempoInicial = double.Parse(txtTiempoInicial.Text); double tiempoFinal = double.Parse(txtTiempoFinal.Text); double frecuenciaMuestreo = double.Parse(txtFrecuenciaMuestreo.Text); Señal señal; switch (cbTipoSeñal.SelectedIndex) { //Senoidal case 0: double amplitud = double.Parse(((ConfiguracionSeñalSenoidal)(panelConfiguracion.Children[0])).txtAmplitud.Text); double fase = double.Parse(((ConfiguracionSeñalSenoidal)(panelConfiguracion.Children[0])).txtFase.Text); double frecuencia = double.Parse(((ConfiguracionSeñalSenoidal)(panelConfiguracion.Children[0])).txtFrecuencia.Text); señal = new SeñalSenoidal(amplitud, fase, frecuencia); break; //Rampa case 1: señal = new SeñalRampa(); break; case 2: double alpha = double.Parse(((ConfiguracionSeñalExponencial)(panelConfiguracion.Children[0])).txtAlpha.Text); señal = new SeñalExponencial(alpha); break; default: señal = null; break; } señal.TiempoInicial = tiempoInicial; señal.TiempoFinal = tiempoFinal; señal.FrecuenciaMuestreo = frecuenciaMuestreo; señal.construirSeñalDigital(); //Escalar double FactorEscala = double.Parse(txtEscalaAmplitud.Text); señal.escalar(FactorEscala); double FactorDesplazarY = double.Parse(txtDesplazarY.Text); señal.desplazarY(FactorDesplazarY); // if ((bool)chTruncar.IsChecked) { //truncar float FactorUmbral = float.Parse(txtUmbral.Text); señal.truncar(FactorUmbral); } // // if ((bool)chPotencia.IsChecked) { //potencia float FactorPotencia = float.Parse(txtPotencia.Text); señal.potencia(FactorPotencia); } // señal.actualizarAmplitudMaxima(); plnGrafica.Points.Clear(); if (señal != null) { //Recorrer una coleccion o arreglo foreach (Muestra muestra in señal.Muestras) { plnGrafica.Points.Add(new Point((muestra.X - tiempoInicial) * scrContenedor.Width, ((muestra.Y / señal.AmplitudMaxima) * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); } lblAmplitudMaximaY.Text = señal.AmplitudMaxima.ToString(); lblAmplitudMaximaNegativaY.Text = "-" + señal.AmplitudMaxima.ToString(); } plnEjeX.Points.Clear(); //Punto del Principio plnEjeX.Points.Add(new Point(0, (scrContenedor.Height / 2))); //Punto del Fin plnEjeX.Points.Add(new Point(((tiempoFinal - tiempoInicial) * scrContenedor.Width), (scrContenedor.Height / 2))); //Punto del Principio plnEjeY.Points.Add(new Point(0 - tiempoInicial * scrContenedor.Width, scrContenedor.Height)); //Punto del Fin plnEjeY.Points.Add(new Point(0 - tiempoInicial * scrContenedor.Width, scrContenedor.Height * -1)); }
private void graficar_Click(object sender, RoutedEventArgs e) { double tiempoInicial = double.Parse(txtTiempoInicial.Text); double tiempoFinal = double.Parse(txtTiempoFinal.Text); double frecuenciaMuestreo = double.Parse(txtFrecuenciaMuestreo.Text); Señal señal; Señal segundaSeñal; //primera señal switch (cbTipoSeñal.SelectedIndex) { //Seniodal case 0: double amplitud = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtAmplitud.Text); double fase = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtFase.Text); double frecuencia = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracion.Children[0]).txtFrecuencia.Text); señal = new SeñalSenoidal(amplitud, fase, frecuencia); break; //Rampa case 1: señal = new Rampa(); break; // Exponencial case 2: double alpha = double.Parse(((ConfiguracionSeñalExponencial)panelConfiguracion.Children[0]).txtAlpha.Text); señal = new SeñalExponencial(alpha); break; default: señal = null; break; } //segunda señal switch (cbTipoSeñalSegundaSeñal.SelectedIndex) { //Seniodal case 0: double amplitud = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracionSegundaSeñal.Children[0]).txtAmplitud.Text); double fase = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracionSegundaSeñal.Children[0]).txtFase.Text); double frecuencia = double.Parse(((ConfiguracionSeñalSenoidal)panelConfiguracionSegundaSeñal.Children[0]).txtFrecuencia.Text); segundaSeñal = new SeñalSenoidal(amplitud, fase, frecuencia); break; //Rampa case 1: segundaSeñal = new Rampa(); break; // Exponencial case 2: double alpha = double.Parse(((ConfiguracionSeñalExponencial)panelConfiguracionSegundaSeñal.Children[0]).txtAlpha.Text); segundaSeñal = new SeñalExponencial(alpha); break; default: segundaSeñal = null; break; } plnGrafica.Points.Clear(); plnSegundaseñal.Points.Clear(); if (señal != null) { señal.tiempoFinal = tiempoFinal; señal.tiempoInicial = tiempoInicial; señal.frecuenciaMuestreo = frecuenciaMuestreo; segundaSeñal.tiempoFinal = tiempoFinal; segundaSeñal.tiempoInicial = tiempoInicial; segundaSeñal.frecuenciaMuestreo = frecuenciaMuestreo; //contruir señal señal.construirSeñalDigital(); segundaSeñal.construirSeñalDigital(); //ecalar if ((bool)chbEscala.IsChecked) { double factorEscala = double.Parse(txtEscalaAmplitud.Text); señal.escalar(factorEscala); } if ((bool)chbEscalaSegundaSeñal.IsChecked) { double factorEscala = double.Parse(txtEscalaAmplitudSegundaSeñal.Text); segundaSeñal.escalar(factorEscala); } //desplazamiento if ((bool)chbDesplazamiento.IsChecked) { double desplazamiento = double.Parse(txtDesplazamientoY.Text); señal.desplazarY(desplazamiento); } if ((bool)chbDesplazamientoSegundaSeñal.IsChecked) { double desplazamiento = double.Parse(txtDesplazamientoYSegundaSeñal.Text); segundaSeñal.desplazarY(desplazamiento); } //Truncar if ((bool)chbTruncar.IsChecked) { double umbral = double.Parse(txtTruncar.Text); señal.truncar(umbral); } if ((bool)chbTruncarSegundaSeñal.IsChecked) { double umbral = double.Parse(txtTruncarSegundaSeñal.Text); segundaSeñal.truncar(umbral); } //potencia if ((bool)chbPotencia.IsChecked) { double exponente = double.Parse(txtPotencia.Text); señal.potencia(exponente); } if ((bool)chbPotenciaSegundaSeñal.IsChecked) { double exponente = double.Parse(txtPotenciaSegundaSeñal.Text); segundaSeñal.potencia(exponente); } //actualizar amplitud maxima señal.actualizarAmplitudMaxima(); segundaSeñal.actualizarAmplitudMaxima(); //recorrer una coleccion o arreglo foreach (Muestra muestra in señal.muestras) { plnGrafica.Points.Add(new Point((muestra.x - tiempoInicial) * scrContenedor.Width, (muestra.y / señal.amplitudMaxima * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); } foreach (Muestra muestra in segundaSeñal.muestras) { plnSegundaseñal.Points.Add(new Point((muestra.x - tiempoInicial) * scrContenedor.Width, (muestra.y / señal.amplitudMaxima * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); } lblAmplitudMaximaY.Text = señal.amplitudMaxima.ToString(); lblAmplitudMaximaNegativaY.Text = "-" + señal.amplitudMaxima.ToString(); } plnEjeX.Points.Clear(); //punto del principio plnEjeX.Points.Add(new Point(0, scrContenedor.Height / 2)); //punto del fin plnEjeX.Points.Add(new Point((tiempoFinal - tiempoInicial) * scrContenedor.Width, scrContenedor.Height / 2)); plnEjeY.Points.Clear(); //punto del principio plnEjeY.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, (1 * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); //punto del fin plnEjeY.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, (-1 * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2))); }