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