Esempio n. 1
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;
        }