private void BtnGraficar_Click(object sender, RoutedEventArgs e) { double frecuenciaMuestreo = double.Parse(txtFrecuenciaMuestreo.Text); double tiempoInicial = double.Parse(txtTiempoInicial.Text); double tiempoFinal = double.Parse(txtTiempoFinal.Text); //FuncionSigno señal = new FuncionSigno(); Señal señal; //Segunda señal Señal señalResultante; switch (CbTipoSenal.SelectedIndex) { case 0: señal = new SeñalParabolica(); break; case 1: //Casteo y luego parse 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; case 2: double alpha = double.Parse( ((ConfiguaracionExponencial)(panelConfiguracion.Children[0])).txtAlpha.Text); señal = new SeñalExponencial(alpha); break; case 3: string rutaArchivo = ((ConfiguracionAudio)(panelConfiguracion.Children[0])).txtRutaArchivo.Text; señal = new SeñalAudio(rutaArchivo); txtTiempoInicial.Text = señal.TiempoInicial.ToString(); txtTiempoFinal.Text = señal.TiempoFinal.ToString(); txtFrecuenciaMuestreo.Text = señal.FrecuenciaMuestreo.ToString(); break; default: señal = null; break; } if (CbTipoSenal.SelectedIndex != 3 && señal != null) { señal.TiempoInicial = tiempoInicial; señal.TiempoFinal = tiempoFinal; señal.FrecuenciaMuestreo = frecuenciaMuestreo; señal.construirSeña(); } switch (cbOperacion.SelectedIndex) { case 0: //Escala de Amplitud double factorEscala = double.Parse(((OperacionEscalaAmplitud)(panelConfiguracion.Children[0])).txtFactorEscala.Text); señalResultante = new Señal.escalarAmplitud(señal, factorEscala); break; default: señalResultante = null; break; } double amplitudMaxima = señal.AmplitudMaxima; double amplitudMaximaResultado = señalResultante.AmplitudMaxima; plnGrafica.Points.Clear(); plnGraficaResultante.Points.Clear(); //para graficar los puntos foreach (Muestra muestra in señal.Muestras) { plnGrafica.Points.Add(adaptarCoordenadas(muestra.X, muestra.Y, tiempoInicial, amplitudMaxima)); } foreach (Muestra muestra in señalResultante.Muestras) { plnGraficaResultante.Points.Add(adaptarCoordenadas(muestra.X, muestra.Y, tiempoInicial, amplitudMaximaResultado)); } lbllimiteSuperior.Text = amplitudMaxima.ToString("F"); lbllimiteInferior.Text = "-" + amplitudMaxima.ToString("F"); lbllimiteSuperiorResultante.Text = amplitudMaximaResultado.ToString("F"); lbllimiteInferiorResulstante.Text = "-" + amplitudMaximaResultado.ToString("F"); plnEjeX.Points.Clear(); plnEjeX.Points.Add(adaptarCoordenadas(tiempoInicial, 0.0, tiempoInicial, amplitudMaxima)); plnEjeX.Points.Add(adaptarCoordenadas(tiempoFinal, 0.0, tiempoInicial, amplitudMaxima)); plnEjeY.Points.Clear(); plnEjeY.Points.Add(adaptarCoordenadas(0.0, amplitudMaxima, tiempoInicial, amplitudMaxima)); plnEjeY.Points.Add(adaptarCoordenadas(0.0, amplitudMaxima * -1, tiempoInicial, amplitudMaxima)); //RESULTADO /2da grafica/ plnEjeXResultante.Points.Clear(); plnEjeXResultante.Points.Add(adaptarCoordenadas(tiempoInicial, 0.0, tiempoInicial, amplitudMaximaResultado)); plnEjeXResultante.Points.Add(adaptarCoordenadas(tiempoFinal, 0.0, tiempoInicial, amplitudMaximaResultado)); plnEjeYResultante.Points.Clear(); plnEjeYResultante.Points.Add(adaptarCoordenadas(0.0, amplitudMaximaResultado, tiempoInicial, amplitudMaximaResultado)); plnEjeYResultante.Points.Add(adaptarCoordenadas(0.0, amplitudMaximaResultado * -1, tiempoInicial, amplitudMaximaResultado)); }