Exemplo n.º 1
0
        // SobreCarga de los operadores * binarios
        public static Imaginario operator *(Imaginario i1, Imaginario i2)
        {
            double re = 0;
            double ri = 0;

            re = (i1.entero * i2.entero) - (i1.imaginario * i2.imaginario);
            ri = (i1.entero * i1.imaginario) + (i2.entero * i2.imaginario);

            Imaginario temp = new Imaginario(re, ri);

            return(temp);
        }
Exemplo n.º 2
0
        // SobreCarga de los operadores - binarios
        public static Imaginario operator -(Imaginario i1, Imaginario i2)
        {
            double re = 0;
            double ri = 0;

            re = i1.Entero - i2.Entero;
            ri = i1.Imaginari - i2.Imaginari;

            Imaginario temp = new Imaginario(re, ri);

            return(temp);
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// CONSTRUYE EL NUMERO IMAGINARIO CON LOS DATOS INTRODUCIDOS
        ///
        /// </summary>
        ///
        private void LeerImaginario()
        {
            Racional real       = Racional.StringToRacional(tbFilas.Text);
            Racional imaginaria = Racional.StringToRacional(tbcolumnas.Text);

            if (label2.Text == "-")
            {
                imaginaria = new Racional(imaginaria.Numerador * -1, imaginaria.Denominador);
            }
            imaginario = new Imaginario(real, imaginaria);
            if (paso > 0)
            {
                btContinuar.PerformClick();
            }
        }
Exemplo n.º 4
0
 private void btContinuar_Click(object sender, EventArgs e)
 {
     if (paso == 0)
     {
         indicesrojos = new List <int>();
         if (!directa)
         {
             lbExplicacion.Text = "El número imaginario unidad es √-1 y se indica como 'i'. Un número imaginario de coeficiente distinto a la unidad, se indica 'ci' donde c es un número real que es el coeficiente. Tambien se puede expresar en combinación con un número real con la forma: a + ci , donde 'a' y 'c' son números reales, en estos casos se denominan: numeros complejos.\nEl cuadrado del imaginario unidad, es -1.";
         }
         else if (directa)
         {
             lbExplicacion.Text += "\nEl número imaginario unidad es √-1 y se indica como 'i'. Un número imaginario de coeficiente distinto a la unidad, se indica 'ci' donde c es un número real que es el coeficiente. Tambien se puede expresar en combinación con un número real con la forma: a + ci , donde 'a' y 'c' son números reales, en estos casos se denominan: numeros complejos.\nEl cuadrado del imaginario unidad, es -1.";
         }
         rtbExplicaciones.Text = "i: Número imaginario unidad igual a la raiz de -1 ";
         indicesrojos.Add(0);
         indicesrojos.Add(1);
         indicesrojos.Add(rtbExplicaciones.Text.Length);
         rtbExplicaciones.Text += "\n\n2i:  √(-4) = √(4 * -1) = 2√(-1) = 2i Imaginario puro";
         indicesrojos.Add(4);
         indicesrojos.Add(rtbExplicaciones.Text.Length);
         rtbExplicaciones.Text += "\n\n15+2i: Combinacion de un número real (15) más un imaginario (2i). Número complejo.";
         indicesrojos.Add(7);
         indicesrojos.Add(rtbExplicaciones.Text.Length);
         rtbExplicaciones.Text += "\n\ni^2 = -1";
         indicesrojos.Add(5);
         for (int i = 0; i < indicesrojos.Count; i += 2)
         {
             rtbExplicaciones.Select(indicesrojos[i], indicesrojos[i + 1]);
             rtbExplicaciones.SelectionColor = Color.Red;
             rtbExplicaciones.SelectionFont  = new Font("Dejavu Sans", 14, FontStyle.Bold);
         }
         paso++;
     }
     else if (paso == 1)
     {
         if (!directa)
         {
             lbExplicacion.Text = "Un número complejo se puede representar gráficamente, considerando la parte real como el valor de las abcisas ( eje X ), y el coeficiente imaginario como valor de las ordenadas ( eje Y ).\nEn el ejemplo, se puede ver la representación gráfica del complejo: 5 + 9i ";
         }
         else if (directa)
         {
             lbExplicacion.Text += "\nUn número complejo se puede representar gráficamente, considerando la parte real como el valor de las abcisas ( eje X ), y el coeficiente imaginario como valor de las ordenadas ( eje Y ).\nEn el ejemplo, se puede ver la representación gráfica del complejo: 5 + 9i ";
         }
         EtiquetaFilas.Show();
         EtiquetaFilas.Location = new Point(btContinuar.Location.X, btContinuar.Location.Y + btContinuar.Height + 5);
         EtiquetaFilas.Text     = "Parte real:";
         EtiquetaFilas.AutoSize = true;
         tbFilas.Show();
         tbFilas.Location  = new Point(EtiquetaFilas.Location.X, EtiquetaFilas.Location.Y + EtiquetaFilas.Height + 5);
         tbFilas.Width     = EtiquetaFilas.Width;
         tbFilas.Text      = "5";
         tbFilas.KeyPress += Cajas_KeyPress;
         tbFilas.TextAlign = HorizontalAlignment.Center;
         label2.Show();
         label2.BackColor = Color.Transparent;
         label2.Location  = new Point(tbFilas.Location.X + tbFilas.Width + 5, tbFilas.Location.Y);
         label2.Font      = EtiquetaFilas.Font;
         label2.Text      = "+";
         label2.Width     = 3;
         label2.TextAlign = ContentAlignment.MiddleCenter;
         EtiquetaColumnas.Show();
         EtiquetaColumnas.Location = new Point(label2.Location.X + label2.Width + 5, EtiquetaFilas.Location.Y);
         EtiquetaColumnas.Text     = "Parte imaginaria";
         EtiquetaColumnas.AutoSize = true;
         tbcolumnas.Show();
         tbcolumnas.Location  = new Point(EtiquetaColumnas.Location.X, tbFilas.Location.Y);
         tbcolumnas.Width     = EtiquetaColumnas.Width;
         tbcolumnas.Text      = "9";
         tbcolumnas.TextAlign = HorizontalAlignment.Center;
         tbcolumnas.KeyPress += Cajas_KeyPress;
         imaginario           = new Imaginario(5, 9);
         label1.Show();
         label1.BackColor = Color.Transparent;
         label1.Font      = EtiquetaFilas.Font;
         label1.Location  = new Point(tbcolumnas.Location.X + tbcolumnas.Width + 5, tbcolumnas.Location.Y);
         label1.Text      = "i";
         if (!directa)
         {
             grafica = new Espacio2D(750, 600, new Point(10, lbExplicacion.Height + 5));
         }
         else if (directa)
         {
             grafica = new Espacio2D(750, 600, new Point(10, lbExplicacion.Height + 10));
         }
         Controls.Add(grafica.Ventana);
         pnZoom.Show();
         pnZoom.Location = new Point(tbFilas.Location.X, tbFilas.Location.Y + tbFilas.Height + 5);
         btAbajo.Show();
         btAbajo.Click += MoverAbajo;
         btArriba.Show();
         btArriba.Click += MoverArriba;
         btDerecha.Show();
         btDerecha.Click += MoverDerecha;
         btIzquierda.Show();
         btIzquierda.Click += MoverIzquierda;
         btCentrar.Show();
         btCentrar.Click += Centrar;
         btZoomMas.Show();
         btZoomMas.Click += ZoomMas;
         btZoomMenos.Show();
         btZoomMenos.Click += ZoomMenos;
         lbDesplazamiento.Show();
         lbZoomtitulo.Show();
         radioButton1.Show();
         radioButton1.Location = new Point(rtbExplicaciones.Location.X, rtbExplicaciones.Location.Y - 30);
         radioButton2.Show();
         radioButton2.Text     = "Escala Decimal.";
         radioButton1.Text     = "Escala Racional";
         radioButton2.Location = new Point(radioButton1.Location.X + radioButton1.Width + 5, radioButton1.Location.Y);
         if (!directa)
         {
             grafica.PintarLinea(new Punto(new Racional[] { new Racional(0, 1), new Racional(0, 1) }), new Punto(new Racional[] { imaginario.ParteReal, imaginario.ParteImaginaria }), Color.Red, 3, true);
         }
         paso++;
     }
     else if (!directa && paso == 2)
     {
         lbExplicacion.Text = "Introduzca los valores de cualquier imaginario, con coeficientes enteros o racionales, para ver su representacion grafica.";
         tbFilas.Focus();
         tbFilas.SelectAll();
         grafica.PintarLinea(new Punto(new Racional[] { new Racional(0, 1), new Racional(0, 1) }), new Punto(new Racional[] { imaginario.ParteReal, imaginario.ParteImaginaria }), Color.Red, 3, true);
         grafica.Ventana.Invalidate();
         btContinuar.BackColor = Color.SeaGreen;
         btContinuar.Text      = "";
         btContinuar.Size      = new Size(0, 0);
     }
     else if (directa && paso >= 2)
     {
         if (paso > 2)
         {
             grafica.PintarLinea(new Punto(new Racional[] { new Racional(0, 1), new Racional(0, 1) }), new Punto(new Racional[] { imaginario.ParteReal, imaginario.ParteImaginaria }), Color.Red, 3, true);
             grafica.Ventana.Invalidate();
         }
         else if (paso == 2)
         {
             lbExplicacion.Text += "\nIntroduzca los valores de cualquier imaginario, con coeficientes enteros o racionales, para ver su representacion grafica.";
         }
         tbFilas.ResetText();
         tbcolumnas.ResetText();
         label2.Text = "";
         tbFilas.Focus();
         paso++;
     }
 }
Exemplo n.º 5
0
        // SobreCarga de operadores de Usuario
        public static Imaginario operator ++(Imaginario i1)
        {
            Imaginario temp = new Imaginario(i1.Entero + 1, i1.imaginario + 1);

            return(temp);
        }
Exemplo n.º 6
0
 /// <summary>
 ///
 /// REALIZA LA RESOLUCION PASO A PASO
 ///
 /// </summary>
 ///
 private void IniciarResolucion()
 {
     if (paso == 0)
     {
         // Mostrar panel de controles Zoom y desplazamiento
         this.pnZoom.Show();
         pnZoom.Location = new Point(EtiquetaFilas.Location.X, 400);
         btZoomMas.Show();
         btZoomMas.Click += btZoomMas_Click;
         btZoomMenos.Show();
         btZoomMenos.Click += btZoomMenos_Click;
         lbZoomtitulo.Show();
         btCentrar.Show();
         btCentrar.Click += btCentrar_Click;
         lbAjustar.Show();
         btDerecha.Show();
         btDerecha.Click += btDerecha_Click;
         btIzquierda.Show();
         btIzquierda.Click += btIzquierda_Click;
         btArriba.Show();
         btArriba.Click += btArriba_Click;
         btAbajo.Show();
         btAbajo.Click += btAbajo_Click;
         btAjustar.Show();
         btAjustar.Click += btAjustar_Click;
         lbAjustar.Show();
         lbDesplazamiento.Show();
         // Mostrar el area de la grafica
         grafica.Ventana.Show();
         // Mostrar los radioButton para elegir escala decimal o racional
         radioButton1.Show();
         radioButton1.Location = new Point(pnZoom.Location.X, pnZoom.Location.Y - radioButton1.Height - 5);
         radioButton1.Text     = "Escala racional";
         radioButton1.Checked  = true;
         radioButton1.Click   += radioButton1_Click;
         radioButton2.Show();
         radioButton2.Location = new Point(radioButton1.Location.X + radioButton1.Width + 5, radioButton1.Location.Y);
         radioButton2.Text     = "Escala decimal";
         radioButton2.Click   += radioButton2_Click;
         // Construir el complejo y mostrarlo en la etiqueta
         imaginario = new Imaginario(Racional.StringToRacional(tbFilas.Text), Racional.StringToRacional(tbcolumnas.Text));
         label1.Show();
         label1.BackColor = Color.SeaGreen;
         label1.Font      = EtiquetaFilas.Font;
         label1.Location  = new Point(EtiquetaFilas.Location.X, tbcolumnas.Location.Y + tbcolumnas.Height + 5);
         label1.Text      = "Número complejo introducido: ";
         label2.Show();
         label2.BackColor = Color.SeaGreen;
         label2.Font      = label1.Font;
         label2.Location  = new Point(label1.Location.X + label1.Width + 5, label1.Location.Y);
         label2.Text      = imaginario.ToString();
         // Mostrar la representacion grafica del complejo
         grafica.PintarLinea(new Punto(new Racional[] { 0, 0 }), new Punto(new Racional[] { imaginario.ParteReal, imaginario.ParteImaginaria }), Color.Chartreuse, 3, true);
         // Ocultar el boton defecto y mostrar el boton continuar
         btDefecto.Hide();
         btContinuar.Show();
         btContinuar.Location = new Point(EtiquetaFilas.Location.X, pnZoom.Location.Y + pnZoom.Height + 5);
         lbExplicacion.Text   = "En la gráfica se muestra la representación gráfica del complejo introducido. Esta representación se corresponde con la de un vector que vá del punto origen de coordenadas, al punto de coordenada 'X' igual a la parte real del complejo y coordenada 'Y' igual a la parte imaginaria del mismo.";
         lbExplicacion.Focus();
         btContinuar.Click += btContinuar_Click;
         if (directa)
         {
             btContinuar.PerformClick();
         }
     }
     else if (paso == 1)
     {
         lbExplicacion.Text = "El módulo de un número complejo, es igual al módulo del vector representado: ";
         label3.Show();
         label3.Font      = label2.Font;
         label3.BackColor = Color.Chartreuse;
         label3.Location  = new Point(label1.Location.X, label1.Location.Y + label1.Height + 5);
         if (!directa)
         {
             label3.Text = "Módulo = √(" + imaginario.ParteReal.ToString() + "^2 + " + imaginario.ParteImaginaria.ToString() + "^2 ) = " + (imaginario.Modulo).ToDouble().ToString();
         }
         if (directa)
         {
             label3.Text = "Módulo = " + (imaginario.Modulo).ToDouble().ToString();
             btContinuar.PerformClick();
         }
     }
     else if (paso == 2)
     {
         lbExplicacion.Text = "El llamado 'Argumento' de un número complejo, corresponde al ángulo que la representación gráfica del mismo forma con el eje de abcisas:";
         Racional radio = imaginario.Modulo / 2;
         grafica.PintarArco(new Punto(new Racional[] { 0, 0 }), radio, -0.05236D, imaginario.Argumento, Color.Red);
         grafica.Ventana.Invalidate();
         label4.Show();
         label4.Font      = label3.Font;
         label4.BackColor = Color.Chartreuse;
         label4.Location  = new Point(label3.Location.X, label3.Location.Y + label3.Height + 5);
         if (!directa)
         {
             label4.Text = "Argumento = Arcotangente de ( " + imaginario.ParteImaginaria.ToString() + " / " + imaginario.ParteReal.ToString() + " ) = " + imaginario.Argumento.ToString() + " rads";
         }
         if (directa)
         {
             label4.Text = "Argumento = " + imaginario.Argumento.ToString() + " rads";
             btContinuar.PerformClick();
         }
     }
     else if (paso == 3)
     {
         lbExplicacion.Text = "Con el módulo y el argumento, se puede definir tambien un número complejo. En esta definición llamada Polar, se pone primero el módulo del complejo seguido de su argumento ( normalmente en grados sexagesimales ).";
         label5.Show();
         double sexagesimal = imaginario.Argumento * (180D / Math.PI);
         label5.Show();
         label5.Location  = new Point(label4.Location.X, label4.Location.Y + label4.Height + 5);
         label5.Text      = "Forma polar del imaginario: " + Math.Round(imaginario.Modulo.ToDouble(), 2).ToString();
         label5.BackColor = Color.Transparent;
         label6.Show();
         label6.Location  = new Point(label5.Location.X + label5.Width, label5.Location.Y + label5.Height / 2 - 6);
         label6.Text      = Math.Round(sexagesimal, 2).ToString() + "º";
         label6.Font      = new Font("Dejavu Sans", 10);
         label6.BackColor = Color.Transparent;
         if (directa)
         {
             lbExplicacion.Hide();
         }
         btContinuar.Hide();
     }
 }