Ejemplo n.º 1
0
 private void PonerDatosEnPanel(Funcion2D funcion)
 {
     XTextBox.Text = funcion.ExpresionX;
     YTextBox.Text = funcion.ExpresionY;
     intervaloIniTextBox.Text = funcion.Intervalo.Inicio.ToString();
     intervaloFinTextBox.Text = funcion.Intervalo.Fin.ToString();
     colorPanel.BackColor = funcion.ColorLinea;
 }
Ejemplo n.º 2
0
        public void CargarFuncionesG2D(string path)
        {
            System.IO.StreamReader sr = null;

            try
            {
                sr = new System.IO.StreamReader(path, System.Text.Encoding.Unicode);

                string g2d = sr.ReadLine();
                if (g2d != "g2d")
                {
                    throw new MissingFieldException("El fichero seleccionado no es una archivo de Gráficas 2D");
                }
                int count = int.Parse(sr.ReadLine());

                string nombre;
                string exprX;
                string exprY;
                float interX;
                float interY;
                Color color;
                float grosor;
                uint profundidad;
                bool dibujar;
                string metodo;

                for (int i = 0; i < count; i++)
                {
                    nombre = sr.ReadLine();
                    exprX = sr.ReadLine();
                    exprY = sr.ReadLine();
                    interX = float.Parse(sr.ReadLine());
                    interY = float.Parse(sr.ReadLine());
                    color = Color.FromArgb(int.Parse(sr.ReadLine()));
                    grosor = float.Parse(sr.ReadLine());
                    profundidad = uint.Parse(sr.ReadLine());
                    dibujar = bool.Parse(sr.ReadLine());
                    metodo = sr.ReadLine();
                    sr.ReadLine();

                    Funcion2D fun;
                    if (metodo == "DerivadaX")
                    {
                        fun = new Funcion2D(exprX, exprY, new Intervalo(interX, interY), profundidad, color, grosor, nombre, dibujar, true, padre.ObtenerCalculadoraDelUsuario(), new MetodoCalculoDelegate(Graficas2D.Control.Funcion2D.ObtenerPuntos.DerivadaX));
                    }
                    else
                    {
                        fun = new Funcion2D(exprX, exprY, new Intervalo(interX, interY), profundidad, color, grosor, nombre, dibujar, true, padre.ObtenerCalculadoraDelUsuario(), new MetodoCalculoDelegate(Graficas2D.Control.Funcion2D.ObtenerPuntos.Normal));
                    }
                    AgregarFuncion(fun);

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }
        }
Ejemplo n.º 3
0
        private Funcion2D ModificarFuncion(Funcion2D funcion)
        {
            Agregar2Form agregar = new Agregar2Form(this);
            Funcion2D funAnterior = funcion;

            agregar.colorPanel.BackColor = funcion.ColorLinea;
            agregar.grosorNumericUpDown.Value = (decimal)funcion.Grosor;
            agregar.funcionXTextBox.Text = funcion.ExpresionX;
            agregar.funcionYTextBox.Text = funcion.ExpresionY;
            agregar.intervaloIniTextBox.Text = funcion.Intervalo.Inicio.ToString(System.Globalization.CultureInfo.InvariantCulture);
            agregar.intervaloFinTextBox.Text = funcion.Intervalo.Fin.ToString(System.Globalization.CultureInfo.InvariantCulture);

            if (agregar.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ICalculadora calc = padre.ObtenerCalculadoraDelUsuario();

                Funcion2D newFun = agregar.FuncionCreada;
                newFun.Dibujar = funAnterior.Dibujar;
                return newFun;
            }
            else
            {
                return funcion;
            }
        }
Ejemplo n.º 4
0
        public void AgregarFuncion(Funcion2D funcion)
        {
            if (papel.Funciones == null)
            {
                papel.Funciones = new List<SetOfPoints>();
            }

            papel.Funciones.Add(funcion);
            if (funcion.Dibujar)
            {
                funcionesCheckedListBox.Items.Add(funcion, true);
            }
            else
            {
                funcionesCheckedListBox.Items.Add(funcion, false);
            }
            if (funcion.Dibujar) papel.Invalidate();
        }
Ejemplo n.º 5
0
        private void graficarButton_Click(object sender, EventArgs e)
        {
            button1_Click(this, new EventArgs());

            //Graficas2DControl.FuncionSimple primitiva = new Graficas2DControl.FuncionSimple(Graficas2DControl.FuncionSimple.ObtenerPuntos(textBox1.Text, new Graficas2DControl.Intervalo(-20, 20), 50), Color.Blue, 2f, true,"y = " + textBox1.Text);
            Funcion2D primitiva = new Funcion2D("x", textBox1.Text, new Intervalo(-20, 20), 50, Color.Blue, 2f, "x = x" + "; y = " + textBox1.Text, true, true, padre.ObtenerCalculadoraDelUsuario(), Funcion2D.ObtenerPuntos.Normal);

            if (!double.IsNaN(pendiente))
            {
                double n = -(pendiente * punto) + valor;
                string textoFuncion;
                string funcion;

                if (n < 0)
                {
                    funcion = pendiente.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "*x-" + Math.Abs(n).ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
                    textoFuncion = Math.Round(pendiente, 6).ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "*x-" + Math.Round(Math.Abs(n), 6).ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
                }
                else
                {
                    funcion = pendiente.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "*x+" + n.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
                    textoFuncion = Math.Round(pendiente, 6).ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "*x+" + Math.Round(n, 6).ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
                }
                //Graficas2DControl.FuncionSimple derivada = new Graficas2DControl.FuncionSimple(Graficas2DControl.FuncionSimple.ObtenerPuntos(textoFuncion, new Graficas2DControl.Intervalo(-20, 20), 50), Color.Red, 2f, true, "y = " + textoFuncion);
                Funcion2D derivada = new Funcion2D("x", funcion, new Intervalo(-20, 20), 50, Color.Red, 2f, "x = x" + "; y = " + textoFuncion, true, true, padre.ObtenerCalculadoraDelUsuario(), Funcion2D.ObtenerPuntos.Normal);

                Grafica2Form graf = new Grafica2Form(primitiva, derivada);
                padre.NuevaVentana(graf);
            }
        }
Ejemplo n.º 6
0
        private void button2_Click(object sender, EventArgs e)
        {
            ICalculadora calc = padre.ObtenerCalculadoraDelUsuario();

            try
            {
                Funcion2D primi = new Funcion2D("x", textBox1.Text, new Intervalo(-20, 20), 50, Color.Blue, 2f, "y = " + textBox1.Text, true, true, calc, Funcion2D.ObtenerPuntos.Normal);
                Funcion2D deriv = new Funcion2D("x", textBox1.Text, new Intervalo(-20, 20), 50, Color.Red, 2f, "y' = " + textBox1.Text, true, true, calc, Funcion2D.ObtenerPuntos.DerivadaX);

                Grafica2Form graf = new Grafica2Form(padre ,primi, deriv);
                padre.NuevaVentana(graf);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //            try
            //            {
            //                FuncionParametrica primitiva = new FuncionParametrica(textBox1.Text, new Intervalo(-20, 20), 50, Color.Blue, 3f, true, "y = " + textBox1.Text, true);

            //                FuncionParametrica derivada = new FuncionParametrica(textBox1.Text, new Intervalo(-20, 20), 50, Color.Red, 3f, true, "y' = " + textBox1.Text, false);
            //#if muParser
            //                Graficas2D.Control.Funciones.MetodoCalculoDelegate del = new Graficas2D.Control.Funciones.MetodoCalculoDelegate(CalcularFuncionDerivadamuParser);
            //#else
            //                Graficas2D.Control.Funciones.MetodoCalculoDelegate del = new Graficas2D.Control.Funciones.MetodoCalculoDelegate(ObtenerPuntosFuncionDerivada);
            //#endif
            //                derivada.CalcularPuntos(del, "x", textBox1.Text, new Intervalo(-20, 20), (uint)50);

            //                GraficaForm graf = new GraficaForm(primitiva, derivada);
            //                padre.NuevaVentana(graf);
            //            }
            //            catch (Exception ex)
            //            {
            //                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            //                return;
            //            }
        }
Ejemplo n.º 7
0
        private void aceptarButton_Click(object sender, EventArgs e)
        {
            #if muParser
            int i = 0;
            int j = 0;

            if (Int32.TryParse(intervaloIniTextBox.Text, out i) && Int32.TryParse(intervaloFinTextBox.Text, out j) && j > i)
            {
                Graficas2D.Control.muParser.Parser parser = new Graficas2D.Control.muParser.Parser();
                Exception error = null;

                try
                {
                    parser.SetDecSep('.'); // default: "."
                    parser.SetArgSep(','); // default: ","
                    parser.DefineVar("t", new Graficas2D.Control.muParser.ParserVariable(200.5));
                    parser.DefineVar("x", new Graficas2D.Control.muParser.ParserVariable(200.5));
                    parser.SetExpr(funcionXTextBox.Text);
                    parser.Eval();
                }
                catch (Exception ex)
                {
                    error = ex;
                    this.DialogResult = System.Windows.Forms.DialogResult.Abort;
                }

                if (error == null)
                {
                    error = null;
                    try
                    {
                        parser.SetDecSep('.'); // default: "."
                        parser.SetArgSep(','); // default: ","
                        parser.DefineVar("t", new Graficas2D.Control.muParser.ParserVariable(200.5));
                        parser.DefineVar("x", new Graficas2D.Control.muParser.ParserVariable(200.5));
                        parser.SetExpr(funcionXTextBox.Text);
                        parser.Eval();
                    }
                    catch (Exception ex)
                    {
                        error = ex;
                        this.DialogResult = System.Windows.Forms.DialogResult.Abort;
                    }

                    if (error == null)
                    {
                        color = colorPanel.BackColor;
                        interv = new Intervalo(i, j);
                        ecuX = funcionXTextBox.Text;
                        ecuY = funcionYTextBox.Text;
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(error.Message.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        this.DialogResult = System.Windows.Forms.DialogResult.Abort;
                    }
                }
                else
                {
                    MessageBox.Show(error.Message.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.DialogResult = System.Windows.Forms.DialogResult.Abort;
                }
            }
            else
            {
                MessageBox.Show("Los intervalos no están en el formato correcto.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.DialogResult = System.Windows.Forms.DialogResult.Abort;
            }

            #else
            float i = 0;
            float f = 0;

            ICalculadora calc = formGrafica.Padre.ObtenerCalculadoraDelUsuario();

            if (calc.ComprobarValidez(intervaloIniTextBox.Text) && calc.ComprobarValidez(intervaloFinTextBox.Text))
            {
                i = (float)calc.EvaluarExpresion(intervaloIniTextBox.Text);
                f = (float)calc.EvaluarExpresion(intervaloFinTextBox.Text);

                if (f >= i)
                {
                    try
                    {
                        calc.EvaluarExpresion(funcionXTextBox.Text);
                        calc.EvaluarExpresion(funcionYTextBox.Text);

                        funcionFinal = new Funcion2D(funcionXTextBox.Text, funcionYTextBox.Text, new Intervalo(i, f), 20, colorPanel.BackColor, (float)grosorNumericUpDown.Value, "x= " + funcionXTextBox.Text + (checkBox1.Checked ? "; y'= " : "; y= ") + funcionYTextBox.Text, true, true, formGrafica.Padre.ObtenerCalculadoraDelUsuario(), checkBox1.Checked ? new Control.MetodoCalculoDelegate(Funcion2D.ObtenerPuntos.DerivadaT) : new Control.MetodoCalculoDelegate(Funcion2D.ObtenerPuntos.Normal));
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("El valor de inicio no puede ser mayor que el valor final.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Las expresiones del intervalo no son correctas.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            #endif
        }
Ejemplo n.º 8
0
        private void graficarButton_Click(object sender, EventArgs e)
        {
            ICalculadora calc = padre.ObtenerCalculadoraDelUsuario();
            try
            {
                calc.EvaluarExpresion(ecuacionATextBox.Text);
                calc.EvaluarExpresion(ecuacionBTextBox.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Funcion2D funA = new Funcion2D("x", ecuacionATextBox.Text, new Intervalo(-20, 20), 50, Color.Blue, 2f, "y = " + ecuacionATextBox.Text, true, true, padre.ObtenerCalculadoraDelUsuario(), Funcion2D.ObtenerPuntos.Normal);
            Funcion2D funB = new Funcion2D("x", ecuacionBTextBox.Text, new Intervalo(-20, 20), 50, Color.Blue, 2f, "y = " + ecuacionBTextBox.Text, true, true, padre.ObtenerCalculadoraDelUsuario(), Funcion2D.ObtenerPuntos.Normal);

            Grafica2Form graf = new Grafica2Form(funA, funB);
            padre.NuevaVentana(graf);
        }