private void btnGraficar_Click(object sender, RoutedEventArgs e)
        {
            //CASTING = Convertir entre tipos de datos.


            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;

            //Exponencial
            case 2:
                double alpha =
                    double.Parse(
                        ((SeñalExponencialConf)panelConfiguracion.Children[0]).txtAlpha.Text);
                señal = new SeñalExponencial2(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();


            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();
        }
Пример #2
0
        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;

            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;

            // Exponencial2
            case 3:
                double alpha2 = double.Parse(((ConfiguracionSeñalExponencial2)panelConfiguracion.Children[0]).txtAlpha2.Text);
                señal = new SeñalExponencial2(alpha2);
                break;

            // Exponente
            case 4:
                double exponente = double.Parse(((ConfiguracionSeñalExponencial2)panelConfiguracion.Children[0]).txtExponente.Text);
                señal = new SeñalExponencial2(exponente);
                break;

            default:
                señal = null;
                break;
            }



            plnGrafica.Points.Clear();

            if (señal != null)
            {
                señal.tiempoFinal        = tiempoFinal;
                señal.tiempoInicial      = tiempoInicial;
                señal.frecuenciaMuestreo = frecuenciaMuestreo;

                //contruir señal
                señal.construirSeñalDigital();

                //escalar
                if ((bool)chbEscalar.IsChecked)
                {
                    double escalar = double.Parse(txtEscalar.Text);
                    señal.escalar(escalar);
                }

                //desplazamiento
                if ((bool)chbDesplazamiento.IsChecked)
                {
                    double desplazamiento = double.Parse(txtDesplazamientoY.Text);
                    señal.desplazarY(desplazamiento);
                }

                //desplazamiento
                if ((bool)chbTruncar.IsChecked)
                {
                    double umbral = double.Parse(txtUmbral.Text);
                    señal.truncar(umbral);
                }



                //actualizar amplitud maxima
                señ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)));
                }

                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)));
        }