/// <summary> /// Evento que registramos para que cuando el usuario haya indicado el elemento que quiere añadir, al pulsar el boton esta se añada al listview /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bAñadir_Click(object sender, RoutedEventArgs e) { try { String tipoElemento = (selectorFiguras.SelectedItem as Label).Content.ToString(); switch (tipoElemento) { case "Recta": //Si el usuario quiere hacer una nueva recta Recta r = new Recta(tipoElemento); resumenFiguras.Items.Add(r); añadirEnCanvas(r); break; case "Texto": //Si el usuario quiere hacer una nueva caja con texto Texto t = new Texto(tipoElemento); resumenFiguras.Items.Add(t); añadirEnCanvas(t); break; default: //En otro caso, es una figura Figura f = new Figura(tipoElemento); resumenFiguras.Items.Add(f); añadirEnCanvas(f); break; } } catch (NullReferenceException) { MessageBox.Show("No has seleccionado un elemento para añadir", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// ///PINTA LOS VECTORES PERPENDICULARES DE LOS PLANOS , EL VECTOR PARALELO A LA LINEA DE ///INTERSECCION Y CONTINUA LA EXPLICACION /// /// /// </summary> /// private void PrepararResultado() { lbExplicacion.Text = " Una vez obtenido un punto de paso de la recta de intersección, falta obtener el vector paralelo a esa recta.\nEl vector paralelo a la recta, ha de ser un vector perpendicular a los vectores perpendiculares de los dos planos. Para obtener este vector, podemos calcular el producto cruz entre los vectores perpendiculares de los planos."; // Obtener el vector perpendicular a los vectores perpendiculares de los planos paralelo = Vector.ProductoCruz(plano1.VectorPerpendicular, plano2.VectorPerpendicular); if (!directa) { label2.Text += "\n\nVector paralelo a la recta de intersección: \n" + paralelo.ToString(); flotante.Height += 40; } // Construir la recta de interseccion interseccion = plano1.Interseccion(plano2); //Vector paralelo a la recta de interseccion paralelo = new Vector(new Punto("0 0 0"), new Punto(paralelo.Componentes)); // Pintar los vectores perpendiculares Vector perpendicular1 = new Vector(new Punto("0 0 0"), new Punto(plano1.VectorPerpendicular.Componentes)); Vector perpendicular2 = new Vector(new Punto("0 0 0"), new Punto(plano2.VectorPerpendicular.Componentes)); ventanagrafica.PintarVector(interseccion.PuntoDePaso, new Punto(new Racional[3] { perpendicular1.Componentes[0] + interseccion.PuntoDePaso.X, perpendicular1.Componentes[1] + interseccion.PuntoDePaso.Y, perpendicular1.Componentes[2] + interseccion.PuntoDePaso.Z }), Color.DarkOrange, 4, false); ventanagrafica.PintarVector(interseccion.PuntoDePaso, new Punto(new Racional[3] { perpendicular2.Componentes[0] + interseccion.PuntoDePaso.X, perpendicular2.Componentes[1] + interseccion.PuntoDePaso.Y, perpendicular2.Componentes[2] + interseccion.PuntoDePaso.Z }), Color.SlateBlue, 4, false); ventanagrafica.PintarVector(interseccion.PuntoDePaso, new Punto(new Racional[3] { paralelo.Componentes[0] / 2 + interseccion.PuntoDePaso.X, paralelo.Componentes[1] / 2 + interseccion.PuntoDePaso.Y, paralelo.Componentes[2] / 2 + interseccion.PuntoDePaso.Z }), Color.Red, 4, false); ventanagrafica.Ventana.Invalidate(); if (directa) { FinalizarResolucion(); } }
/// <summary> /// /// CONTRUYE EL SISTEMA IGUALANDO LAS ECUACIONES DE CADA /// PLANO, PINTA EL PUNTO DE PASO DE LA RECTA DE INTERSECCION Y CONTINUA LA EXPLICACION /// /// </summary> /// private void ContinuarResolucion() { // Construir la recta de interseccion interseccion = plano1.Interseccion(plano2); // Determinar la variable que se consideró nula int contador = 0; char variablenula = '\0'; foreach (Racional r in interseccion.PuntoDePaso.Coordenadas) { if (r.Numerador == 0) { variablenula = (char)((int)'X' + contador); } contador++; } lbExplicacion.Text = " Obtenemos un punto de paso de la línea de intersección, construyendo un sistema con las ecuaciones de cada plano y dando valor cero a una de las variables. En este caso, le damos valor cero a la coordenada " + variablenula + "."; if (!directa) { // Construir la ventana flotante flotante = new ControlesFlotantes(); flotante.Show(); flotante.Text = " "; flotante.StartPosition = FormStartPosition.Manual; flotante.Location = pnDatos.Location; flotante.Opacity = 1; // Mostrar el sistema de ecuaciones int nula = variablenula - 'X'; label2.Visible = true; label2.AutoSize = true; label2.Font = new Font(label2.Font.FontFamily, 10); label2.BackColor = Color.Transparent; label2.Text = "Sistema con las ecuaciones de cada plano con : " + variablenula + " = 0."; label2.Text += "\n"; for (int i = 0; i < plano1.EcuacionDelPlano().CantidadDeTerminosIzquierda; i++) { if (plano1.EcuacionDelPlano().ObtenerTerminoIzquierda(i).Variables[0] != variablenula) { label2.Text += plano1.EcuacionDelPlano().ObtenerTerminoIzquierda(i).ToString(); } } label2.Text += " = " + Racional.AString(plano1.EcuacionDelPlano().ObtenerTerminoDerecha(0).Coeficiente); label2.Text += "\n"; for (int i = 0; i < plano2.EcuacionDelPlano().CantidadDeTerminosIzquierda; i++) { if (plano2.EcuacionDelPlano().ObtenerTerminoIzquierda(i).Variables[0] != variablenula) { label2.Text += plano2.EcuacionDelPlano().ObtenerTerminoIzquierda(i).ToString(); } } label2.Text += " = " + Racional.AString(plano2.EcuacionDelPlano().ObtenerTerminoDerecha(0).Coeficiente); flotante.Controls.Add(label2); label2.Location = new Point(5, 5); // Mostrar el punto de paso label2.Text += "\n\n X: " + Racional.AString(interseccion.PuntoDePaso.X) + "\n Y: " + Racional.AString(interseccion.PuntoDePaso.Y) + "\n Z: " + Racional.AString(interseccion.PuntoDePaso.Z); // Pintar el punto de paso de la recta de interseccion ventanagrafica.PintarPunto(interseccion.PuntoDePaso, 5, false, Color.Red); flotante.Size = new Size(flotante.Width, label2.Height + 65); } ventanagrafica.Ventana.Invalidate(); if (!directa) { btContinuar.Show(); } if (directa) { PrepararResultado(); } }
/// <summary> /// /// DIBUJA LA RECTA, EL PUNTO , EL PLANO PERPENDICULAR A LA RECTA QUE PASA POR EL PUNTO E INICIA /// LA EXPLICACION /// /// </summary> /// private void IniciarResolucion() { btDefecto.Hide(); if (defecto) { this.Focus(); btContinuar.Visible = true; this.AcceptButton = this.btContinuar; paso++; tbPunto1X.Text = "2"; tbPunto1Y.Text = "6"; tbPunto1Z.Text = "7"; tbPunto2X.Text = "10"; tbPunto2Y.Text = "-5"; tbPunto2Z.Text = "15"; tbPunto3X.Text = "10"; tbPunto3Y.Text = "3"; tbPunto3Z.Text = "2"; } // Mostrar los controles lbTituloAnguloX.Visible = true; btIsometrica.Visible = true; lbAnguloX.Visible = true; btAlzado.Visible = true; sbAngulox.Visible = true; btPerfil.Visible = true; lbTituloAnguloY.Visible = true; btPlanta.Visible = true; lbAnguloY.Visible = true; sbAnguloY.Visible = true; lbTituloAnguloZ.Visible = true; lbAnguloZ.Visible = true; sbAnguloZ.Visible = true; btZoomMas.Visible = true; btZoomMenos.Visible = true; lbZoomtitulo.Visible = true; lbAjustar.Visible = true; btAjustar.Visible = true; pnZoom.Visible = true; btAbajo.Visible = true; btArriba.Visible = true; btDerecha.Visible = true; btIzquierda.Visible = true; btCentrar.Visible = true; btContinuar.Visible = true; punto1 = new Punto(tbPunto1X.Text + " " + tbPunto1Y.Text + " " + tbPunto1Z.Text); punto2 = new Punto(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text); punto3 = new Punto(tbPunto3X.Text + " " + tbPunto3Y.Text + " " + tbPunto3Z.Text); if (directa) { lbExplicacion.Hide(); } lbExplicacion.Text = " La distancia entre el punto y la recta, es el módulo del vector perpendicular a la recta que vá desde el punto a la recta.\n El punto inicial de ese vector, es el punto del que se quiere encontrar la distancia a la recta. El punto final de ese vector, será el punto de intersección de la recta con el plano perpendicular a la misma, y que pasa por el punto del que se quiere encontrar la distancia a la recta."; // Crear la recta linea1 = new Recta(punto1, punto2); // Pintar la linea ventanagrafica.PintarLinea(punto1, punto2, Color.DarkOrange, 5); // Pintar los puntos inicial y final del segmento de recta ventanagrafica.PintarPunto(punto1, 5, true, Color.DarkOrange); ventanagrafica.PintarPunto(punto2, 5, true, Color.DarkOrange); // Pintar el punto ventanagrafica.PintarPunto(punto3, 10, false, Color.Yellow); btIsometrica.PerformClick(); btAjustar.PerformClick(); if (directa) { ContinuarResolucion(); } paso = 1; }
/// <summary> /// /// DIBUJA LOS PUNTOS, EL SEGMENTO DE LINEA Y EL VECTOR E INICIA LA EXPLICACION /// /// </summary> /// private void IniciarResolucion() { btIsometrica.PerformClick(); if (defecto) { this.Focus(); btContinuar.Visible = true; this.AcceptButton = this.btContinuar; paso++; tbPunto1X.Text = "-27"; tbPunto1Y.Text = "-61"; tbPunto1Z.Text = "17"; tbPunto2X.Text = "23"; tbPunto2Y.Text = "39"; tbPunto2Z.Text = "-8"; tbPunto3X.Text = "50"; tbPunto3Y.Text = "-30"; tbPunto3Z.Text = "20"; tbPunto4X.Text = "79/2"; tbPunto4Y.Text = "267/2"; tbPunto4Z.Text = "-37"; sbAnguloZ.Value = 70; sbAnguloY.Value = -30; sbAngulox.Value = 30; } // Mostrar los controles lbTituloAnguloX.Visible = true; btIsometrica.Visible = true; lbAnguloX.Visible = true; btAlzado.Visible = true; sbAngulox.Visible = true; btPerfil.Visible = true; lbTituloAnguloY.Visible = true; btPlanta.Visible = true; lbAnguloY.Visible = true; sbAnguloY.Visible = true; lbTituloAnguloZ.Visible = true; lbAnguloZ.Visible = true; sbAnguloZ.Visible = true; btZoomMas.Visible = true; btZoomMenos.Visible = true; lbZoomtitulo.Visible = true; lbAjustar.Visible = true; btAjustar.Visible = true; pnZoom.Visible = true; btAbajo.Visible = true; btArriba.Visible = true; btDerecha.Visible = true; btIzquierda.Visible = true; btCentrar.Visible = true; btContinuar.Visible = true; btDefecto.Hide(); punto1 = new Punto(tbPunto1X.Text + " " + tbPunto1Y.Text + " " + tbPunto1Z.Text); punto2 = new Punto(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text); punto3 = new Punto(tbPunto3X.Text + " " + tbPunto3Y.Text + " " + tbPunto3Z.Text); punto4 = new Punto(tbPunto4X.Text + " " + tbPunto4Y.Text + " " + tbPunto4Z.Text); lbExplicacion.Text = " Primero construimos las ecuaciones paramétricas de las rectas que pasan por los puntos introducidos. ( Ecuación de la recta en el menu anterior. )"; if (directa) { lbExplicacion.Hide(); } // Dibujar los segmentos de las lineas entre los puntos introducidos ventanagrafica.PintarVector(punto1, punto2, Color.DarkOrange, 3F, true); ventanagrafica.PintarVector(punto3, punto4, Color.SlateBlue, 3F, true); if (defecto) { btAjustar.PerformClick(); } // Mostrar las ecuaciones paramétricas de la rectas en un recuadro flotante linea1 = new Recta(punto1, punto2); linea2 = new Recta(punto3, punto4); if (!directa) { flotante = new ControlesFlotantes(); flotante.Text = " Desarrollo de la resolución"; flotante.pnParametro.Show(); flotante.Location = new Point(btContinuar.Location.X, btContinuar.Location.Y + 20); flotante.pnParametro.Controls.Add(label1); flotante.Show(); flotante.Opacity = 1; flotante.lbTituloParametro.Text = "Ecuaciones paramétricas de la recta 1:"; flotante.sbValor.Hide(); flotante.tbParametro.Hide(); flotante.StartPosition = FormStartPosition.Manual; flotante.Location = new Point(pnDatos.Location.X, pnDatos.Location.Y + pnDatos.Height + 5); foreach (Ecuacion e in linea1.EcuacionesParametricas()) { //flotante.lbTituloParametro.Text += "\n" + e.ObtenerTerminoIzquierda(0).ToString() + " = " + e.ObtenerTerminoDerecha(0).ToString(); double coef1 = Math.Round(e.ObtenerTerminoIzquierda(0).Coeficiente.ToDouble(), 4); double coef2 = Math.Round(e.ObtenerTerminoDerecha(0).Coeficiente.ToDouble(), 4); String ecu1 = "\n" + e.ObtenerTerminoIzquierda(0).Variables[0] + " = " + coef2.ToString() + " " + e.ObtenerTerminoDerecha(0).Variables[0]; // flotante.lbTituloParametro.Text += "\n" + e.ObtenerTerminoIzquierda(0).Variables[0] + " = " + coef2.ToString() +" " + e.ObtenerTerminoDerecha(0).Variables[0]; if (e.ObtenerLadoDerecho.Largo > 1 && e.ObtenerTerminoDerecha(1).Coeficiente.Numerador > 0) { // flotante.lbTituloParametro.Text += " + "; ecu1 += " + "; } else { //flotante.lbTituloParametro.Text += " "; ecu1 += " "; } if (e.ObtenerLadoDerecho.Largo > 1) { //flotante.lbTituloParametro.Text += Math.Round(e.ObtenerTerminoDerecha(1).Coeficiente.ToDouble(), 4).ToString() +" "+ e.ObtenerTerminoDerecha(1).Variables[0]; ecu1 += Math.Round(e.ObtenerTerminoDerecha(1).Coeficiente.ToDouble(), 4).ToString() + " " + e.ObtenerTerminoDerecha(1).Variables[0]; } ecu1 = ecu1.Replace('P', 't'); flotante.lbTituloParametro.Text += ecu1; } // flotante.lbTituloParametro.Text += "\n" + e.ToString(); flotante.lbTituloParametro.Text += "\nEcuaciones paramétricas de la recta 2:"; foreach (Ecuacion e in linea2.EcuacionesParametricas()) { double coef3 = Math.Round(e.ObtenerTerminoIzquierda(0).Coeficiente.ToDouble(), 4); double coef4 = Math.Round(e.ObtenerTerminoDerecha(0).Coeficiente.ToDouble(), 4); string ecu2 = "\n" + e.ObtenerTerminoIzquierda(0).Variables[0] + " = " + coef4.ToString() + " " + e.ObtenerTerminoDerecha(0).Variables[0]; // flotante.lbTituloParametro.Text += "\n" + e.ObtenerTerminoIzquierda(0).ToString() + " = " + e.ObtenerTerminoDerecha(0).ToString(); if (e.ObtenerLadoDerecho.Largo > 1 && e.ObtenerTerminoDerecha(1).Coeficiente.Numerador > 0) { //flotante.lbTituloParametro.Text += " + "; ecu2 += " + "; } else { //flotante.lbTituloParametro.Text += " "; ecu2 += " "; } if (e.ObtenerLadoDerecho.Largo > 1) { // flotante.lbTituloParametro.Text += Math.Round(e.ObtenerTerminoDerecha(1).Coeficiente.ToDouble(), 4).ToString() + e.ObtenerTerminoDerecha(1).Variables[0]; ecu2 += Math.Round(e.ObtenerTerminoDerecha(1).Coeficiente.ToDouble(), 4).ToString() + e.ObtenerTerminoDerecha(1).Variables[0]; } ecu2 = ecu2.Replace('P', 's'); flotante.lbTituloParametro.Text += ecu2; } flotante.lbTituloParametro.Anchor = AnchorStyles.Top; flotante.lbTituloParametro.TextAlign = ContentAlignment.MiddleLeft; flotante.lbTituloParametro.Location = new Point(flotante.lbTituloParametro.Location.X - 100, flotante.lbTituloParametro.Location.Y); flotante.Size = new Size(450, 200); flotante.pnParametro.Size = new Size(430, 180); } if (!directa) { btIsometrica.PerformClick(); } if (directa) { ContinuarResolucion(); } }
/// <summary> /// /// DIBUJA EL PLANO, EL PUNTO Y INICIA/ LA EXPLICACION /// /// </summary> /// private void IniciarResolucion() { btDefecto.Hide(); if (defecto) { this.Focus(); btContinuar.Visible = true; this.AcceptButton = this.btContinuar; paso++; //Vector perpendicular tbPunto1X.Text = "2"; tbPunto1Y.Text = "6"; tbPunto1Z.Text = "3"; //Punto de paso tbPunto2X.Text = "15"; tbPunto2Y.Text = "26"; tbPunto2Z.Text = "10"; // Punto del que se quiere encontrar la distancia al plano tbPunto3X.Text = "50"; tbPunto3Y.Text = "60"; tbPunto3Z.Text = "45"; } // Mostrar los controles lbTituloAnguloX.Visible = true; btIsometrica.Visible = true; lbAnguloX.Visible = true; btAlzado.Visible = true; sbAngulox.Visible = true; btPerfil.Visible = true; lbTituloAnguloY.Visible = true; btPlanta.Visible = true; lbAnguloY.Visible = true; sbAnguloY.Visible = true; lbTituloAnguloZ.Visible = true; lbAnguloZ.Visible = true; sbAnguloZ.Visible = true; btZoomMas.Visible = true; btZoomMenos.Visible = true; lbZoomtitulo.Visible = true; lbAjustar.Visible = true; btAjustar.Visible = true; pnZoom.Visible = true; btAbajo.Visible = true; btArriba.Visible = true; btDerecha.Visible = true; btIzquierda.Visible = true; btCentrar.Visible = true; btContinuar.Visible = true; // Crear el vector perpendicular al plano perpendicular = new Vector(tbPunto1X.Text + " " + tbPunto1Y.Text + " " + tbPunto1Z.Text); // Crear el punto de paso del plano puntopasoplano = new Punto(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text); // Crear el punto del que se quiere encontrar la distancia al plano punto = new Punto(tbPunto3X.Text + " " + tbPunto3Y.Text + " " + tbPunto3Z.Text); // Crear el plano plano = new Plano(perpendicular, puntopasoplano); // Crear la recta perpendicular al plano y que pasa por el punto recta = new Recta(punto, plano.VectorPerpendicular); // Obtener el punto de interseccion de la recta con el plano puntointerseccion = plano.Interseccion(recta); // Punto oculto para establecer la escala Punto ficticio = plano.ADistanciaXY(35, 35); if (ficticio != null) { ventanagrafica.PintarVector(ficticio, ficticio, Color.Black, 1, false); } else { ficticio = new Punto("35 35 35"); ventanagrafica.PintarVector(ficticio, ficticio, Color.Black, 1, false); } if (directa) { lbExplicacion.Hide(); } lbExplicacion.Text = " La distancia entre el punto y el plano, es el módulo del vector que vá desde el punto inicial, al punto donde una recta perpendicular al plano y que pasa por el punto inicial, corta al plano."; // Calcular el tamaño del plano para que pase por el punto de interseccion con la recta perpendicular Racional dist = plano.PuntoDePaso.Distancia(puntointerseccion); int tamaño = (int)dist.ToDouble(); if (tamaño == 0) { tamaño = 5; } // Pintar el plano ventanagrafica.PintarPlano(plano.VectorPerpendicular, puntointerseccion, 50 + tamaño, Color.Chartreuse); // Pintar el punto ventanagrafica.PintarPunto(punto, 10, true, Color.Coral); if (!directa) { btAjustar.PerformClick(); } btIsometrica.PerformClick(); if (directa) { ContinuarResolucion(); } paso = 1; }
/// <summary> /// /// DIBUJA LA RECTA, EL PLANO E INICIA LA EXPLICACION /// /// </summary> /// private void IniciarResolucion() { btDefecto.Hide(); // Valores por defecto if (defecto) { this.Focus(); btContinuar.Visible = true; this.AcceptButton = this.btContinuar; paso++; tbPunto1X.Text = "33"; tbPunto1Y.Text = "12"; tbPunto1Z.Text = "8"; tbPunto2X.Text = "3"; tbPunto2Y.Text = "5"; tbPunto2Z.Text = "10"; tbPunto3X.Text = "4"; tbPunto3Y.Text = "13"; tbPunto3Z.Text = "-9"; tbPunto4X.Text = "2"; tbPunto4Y.Text = "-1"; tbPunto4Z.Text = "3"; } // Mostrar los controles lbTituloAnguloX.Visible = true; btIsometrica.Visible = true; lbAnguloX.Visible = true; btAlzado.Visible = true; sbAngulox.Visible = true; btPerfil.Visible = true; lbTituloAnguloY.Visible = true; btPlanta.Visible = true; lbAnguloY.Visible = true; sbAnguloY.Visible = true; lbTituloAnguloZ.Visible = true; lbAnguloZ.Visible = true; sbAnguloZ.Visible = true; btZoomMas.Visible = true; btZoomMenos.Visible = true; lbZoomtitulo.Visible = true; lbAjustar.Visible = true; btAjustar.Visible = true; pnZoom.Visible = true; btAbajo.Visible = true; btArriba.Visible = true; btDerecha.Visible = true; btIzquierda.Visible = true; btCentrar.Visible = true; btContinuar.Visible = true; btDefecto.Hide(); punto1 = new Punto(tbPunto1X.Text + " " + tbPunto1Y.Text + " " + tbPunto1Z.Text); // Punto inicial de la recta punto2 = new Punto(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text); // Punto final de la recta punto3 = new Punto(tbPunto3X.Text + " " + tbPunto3Y.Text + " " + tbPunto3Z.Text); // Punto de paso del plano punto4 = new Punto(tbPunto4X.Text + " " + tbPunto4Y.Text + " " + tbPunto4Z.Text); // Vector perpendicular al plano lbExplicacion.Text = " El punto de intersección, será un punto que estará a la vez en el plano y en la recta. Por lo tanto, el punto buscado debe cumplir tanto la ecuación de la recta, como la ecuación del plano."; if (directa) { lbExplicacion.Hide(); } // // Crear el objeto linea. linea1 = new Recta(punto1, punto2); // Dibujar el segmento de linea entre los puntos introducidos. ventanagrafica.PintarLinea(punto1, punto2, Color.DarkOrange, 3F); // Crear el objeto plano plano = new Plano(new Vector(punto4.Coordenadas), punto3); // Dibujar el plano segun el vector y punto de paso introducidos. Racional factor = plano.Interseccion(linea1).CoordenadaMaxima; // Para hacer el plano mas o menos grande segun donde esté el punto de interseccion ventanagrafica.PintarPlano(new Vector(punto4.Coordenadas), punto3, 50, Color.Chartreuse); // Mostrar la ecuacion paramétrica de la rectas if (!directa) { label1.Show(); } label1.Location = new Point(btContinuar.Location.X + btContinuar.Width + 5, btContinuar.Location.Y);// + btContinuar.Height + 10); label1.BackColor = Color.Transparent; label1.Font = new Font(label1.Font.FontFamily, 10); label1.Text = "Ecuaciones paramétricas de la recta:\n"; foreach (Ecuacion e in linea1.EcuacionesParametricas()) { // label1.Text += e.ToString() + "\n"; label1.Text += e.ObtenerLadoIzquierdo.ToString() + " = " + Math.Round(e.ObtenerTerminoDerecha(0).Coeficiente.ToDouble(), 4).ToString(); if (e.ObtenerTerminoDerecha(1).Coeficiente.Numerador > 0) { label1.Text += " + "; } label1.Text += Math.Round(e.ObtenerTerminoDerecha(1).Coeficiente.ToDouble(), 4).ToString() + "p\n"; } // Mostrar la ecuacion del plano if (!directa) { label2.Show(); } label2.Location = new Point(label1.Location.X, label1.Location.Y + label1.Height + 10); label2.Font = label1.Font; label2.BackColor = Color.Transparent; label2.Text = "Ecuación del plano: \n"; label2.Text += plano.ToString(); btIsometrica.PerformClick(); if (directa) { ContinuarResolucion(); } paso = 1; }