public Funcion sumarFunciones(Funcion unaFuncion, Funcion otraFuncion) { var faseUnaFuncion = unaFuncion.fase; var faseOtraFuncion = otraFuncion.fase; //Voy a trabajar todo a senos o pasarlo según necesite if (unaFuncion.tipoFuncion == TipoFuncion.Cos) { faseUnaFuncion = faseUnaFuncion + Math.PI / 2; } if (otraFuncion.tipoFuncion == TipoFuncion.Cos) { faseOtraFuncion = faseOtraFuncion + Math.PI / 2; } //Los convierto a complejos var fasorDeUnaFuncion = new NumeroComplejo(unaFuncion.amplitud, faseUnaFuncion, NumeroComplejo.Forma.Polar); var fasorDeOtraFuncion = new NumeroComplejo(otraFuncion.amplitud, faseOtraFuncion, NumeroComplejo.Forma.Polar); var resultadoSuma = fasorDeOtraFuncion.sumarComplejos(fasorDeOtraFuncion); var resultadoFase = resultadoSuma.b; return(new Funcion(resultadoSuma.a, TipoFuncion.Sen, otraFuncion.frecuencia, resultadoFase)); }
private void buttonOperar_Click(object sender, EventArgs e) { if (textBoxComplejo1.Text == "" || textBoxComplejo2.Text == "") { MessageBox.Show("Debe Ingresar los 2 números complejos para operar!"); } else { if (!this.esComplejoValido(textBoxComplejo1.Text) || !this.esComplejoValido(textBoxComplejo2.Text)) { MessageBox.Show("Debe Ingresar los números complejos de la siguiente manera: forma binómica (a;b) o forma polar [a;b]"); //MessageBox.Show(textBoxComplejo1.Text, textBoxComplejo2.Text); } else { //aca se sacarian los numeros de cada textbox, de su expresion regular, se crean los complejos y se ejecuta la operacion correspondiente //luego opero //por ahora los hardcodeo... //NumeroComplejo z1 = new NumeroComplejo(2, 3, NumeroComplejo.Forma.Binomica); //algo asi NumeroComplejo z1 = this.parsearComplejo(textBoxComplejo1.Text); NumeroComplejo z2 = this.parsearComplejo(textBoxComplejo2.Text); NumeroComplejo zres = new NumeroComplejo(0, 0, NumeroComplejo.Forma.Binomica); if (comboBoxOperaciones.SelectedIndex == -1) { MessageBox.Show("Debe seleccionar una operación!"); } else { switch (comboBoxOperaciones.SelectedIndex) { case 0: //sumar zres = z1.sumarComplejos(z2); break; case 1: //restar zres = z1.restarComplejos(z2); break; case 2: //mult zres = z1.multiplicarComplejos(z2); break; case 3: //dividir zres = z1.DividirComplejos(z2); break; } //Despues distinguir si imprimir [a,b] o (a,b) labelResultado.Text = "(" + Math.Round(zres.formaBinomica().a, 3) + " ; " + Math.Round(zres.formaBinomica().b, 3) + ")" + " - [" + Math.Round(zres.formaPolar().a, 3) + " ; " + Math.Round(zres.formaPolar().b, 3) + " rad]"; //armo un case con todas las posibles operaciones seleccionadas //por cada operacion, opero con los complejos } } } }