Beispiel #1
0
        /// <summary>
        ///
        /// DIBUJA EL PLANO PERPENDICULAR A LA RECTA Y QUE PASA POR EL PUNTO , MUESTRA LA ECUACION DEL
        /// PLANO Y CONTINUA LA EXPLICACION
        ///
        /// </summary>
        ///
        private void ContinuarResolucion()
        {
            lbExplicacion.Text = "Construimos la ecuación del plano, con el punto del cual queremos conocer la distancia a la recta como punto de paso del plano, y el vector paralelo a la recta como vector perpendicular al plano.";

            Vector perpendicular = new Vector(punto1, punto2);

            // Construir el plano

            plano = new Plano(perpendicular, punto3);
            if (!directa)
            {
                // Mostrar la ecuacion del plano
                label1.Show();
                label1.Location  = new Point(btContinuar.Location.X, btContinuar.Location.Y + btContinuar.Height + 5);
                label1.BackColor = Color.Transparent;
                label1.Font      = new Font(label1.Font.FontFamily, 10);

                label1.Text = "Ecuación del plano:\n";
                foreach (Termino t in plano.EcuacionDelPlano().ObtenerLadoIzquierdo.Terminos)
                {
                    if (t.Coeficiente.Numerador > 0)
                    {
                        label1.Text += " + ";
                    }
                    label1.Text += Math.Round(t.Coeficiente.ToDouble(), 4).ToString() + t.Variables[0];
                }
                label1.Text += " = " + Math.Round(plano.EcuacionDelPlano().ObtenerTerminoDerecha(0).Coeficiente.ToDouble(), 4).ToString();
            }

            // Dibujar el plano
            long tamaño = (long)perpendicular.ModuloDecimal() * 2; // Para determinar el tamaño en funcion del largo de la recta

            ventanagrafica.PintarPlano(perpendicular, punto3, tamaño, Color.Chartreuse);
            btCentrar.PerformClick();

            if (directa)
            {
                SeguirResolucion();
            }
        }
        /// <summary>
        ///
        /// DIBUJA LOS PLANOS
        ///
        /// </summary>
        ///
        private void IniciarResolucion()
        {
            btDefecto.Hide();

            if (defecto)
            {
                this.Focus();
                btContinuar.Visible = true;
                this.AcceptButton   = this.btContinuar;
                paso++;
                //Punto de paso 1
                tbPunto1X.Text = "0";
                tbPunto1Y.Text = "10";
                tbPunto1Z.Text = "10";
                //Vector perpendicular 1
                tbPunto2X.Text = "0";
                tbPunto2Y.Text = "10";
                tbPunto2Z.Text = "0";
                //Punto de paso 2
                tbPunto3X.Text = "0";
                tbPunto3Y.Text = "0";
                tbPunto3Z.Text = "20";
                //Vector perpendicular 2
                tbPunto4X.Text = "0";
                tbPunto4Y.Text = "0";
                tbPunto4Z.Text = "10";
            }

            // 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(tbPunto3X.Text + " " + tbPunto3Y.Text + " " + tbPunto3Z.Text);
            vector1 = new Vector(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text);
            vector2 = new Vector(tbPunto4X.Text + " " + tbPunto4Y.Text + " " + tbPunto4Z.Text);

            lbExplicacion.Text = " Todo punto de la línea de intersección entre los dos planos, pertenecerá a ambos. Por lo tanto,todo punto de la recta de intersección cumplirá las ecuaciones de los dos planos.";
            if (directa)
            {
                lbExplicacion.Hide();
            }
            // Construir los planos
            plano1 = new Plano(vector1, punto1);
            plano2 = new Plano(vector2, punto2);

            // Mostrar las ecuaciones de los planos
            label1.Show();
            label1.Location  = new Point(btContinuar.Location.X + btContinuar.Width + 5, btContinuar.Location.Y);
            label1.Font      = new Font(label1.Font.FontFamily, 10);
            label1.BackColor = Color.Transparent;
            label1.Text      = "Ecuación del plano1: \n" + plano1.EcuacionDelPlano().ToString() + " \n\n Ecuación del plano2: \n" + plano2.EcuacionDelPlano().ToString();


            // Dibujar los planos
            Vector escalado1 = new Vector(vector1);

            escalado1.MultiplicarPorEscalar(10);
            ventanagrafica.PintarPlano(escalado1, punto1, 50, Color.DarkOrange);
            ventanagrafica.PintarPlano(vector2, punto2, 50, Color.SlateBlue);

            // Punto oculto para que se ajuste la escala al tamaño de los planos
            Vector posicion1 = new Vector(plano1.PuntoDePaso.Coordenadas); // Vector de posicion del punto de paso del 1er plano
            Vector posicion2 = new Vector(plano2.PuntoDePaso.Coordenadas); // Vector de posicion del punto de paso del 2º plano

            if (posicion1.ModuloDecimal() > posicion2.ModuloDecimal())
            {
                Vector ampliado = new Vector(posicion1);
                ampliado.MultiplicarPorEscalar(10);
                oculto = new Punto(ampliado.Componentes);
            }
            else
            {
                Vector ampliado = new Vector(posicion1);
                ampliado.MultiplicarPorEscalar(2);
                oculto = new Punto(ampliado.Componentes);
            }
            ventanagrafica.PintarPunto(oculto, 1, false, Color.Black);

            btIsometrica.PerformClick();
            btAjustar.PerformClick();

            if (directa)
            {
                ContinuarResolucion();
            }
            paso = 1;
        }
Beispiel #3
0
        /// <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;
        }
Beispiel #4
0
        /// <summary>
        ///
        /// DIBUJA EL PUNTO DE PASO,  EL VECTOR PERPENDICULAR, EL PLANO E INICIA LA EXPLICACION
        ///
        /// </summary>
        ///
        private void IniciarResolucion()
        {
            // 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;
            // Establecer los valores por defecto
            if (defecto)
            {
                tbPunto1X.Text = "15"; tbPunto1Y.Text = "25"; tbPunto1Z.Text = "6";
                tbPunto2X.Text = "13"; tbPunto2Y.Text = "8"; tbPunto2Z.Text = "30";
            }
            punto1 = new Punto(tbPunto1X.Text + " " + tbPunto1Y.Text + " " + tbPunto1Z.Text);
            vector = new Vector(tbPunto2X.Text + " " + tbPunto2Y.Text + " " + tbPunto2Z.Text);
            plano  = new Plano(vector, punto1);

            lbExplicacion.Text = " Un plano en el espacio, se define por un punto de paso del plano, y un vector perpendicular al mismo.\n En la imagen puede verse el punto introducido en color naranja, el vector perpendicular en color azul y una porción del plano en color verde.";

            if (directa)
            {
                lbExplicacion.Hide();
            }

            // Dibujar el vector perpendicular al plano
            ventanagrafica.PintarVector(new Punto("0 0 0"), new Punto(vector.Componentes), Color.SlateBlue, 5, true);
            //Dibujar el punto de paso del plano
            ventanagrafica.PintarPunto(punto1, 10, true, Color.DarkOrange);

            // Dibujar la porcion de plano
            ventanagrafica.PintarPlano(vector, punto1, 50, Color.Chartreuse);

            if (directa)
            {
                ContinuarResolucion();
            }
            btIsometrica.PerformClick();
            btAjustar.PerformClick();
            if (defecto)
            {
                btArriba.PerformClick();
                btArriba.PerformClick();
            }
            paso = 1;
        }
Beispiel #5
0
        /// <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;
        }