public FuncionTrigonometrica pasar(FuncionTrigonometrica numero, String unaFuncion) { String cos = "Coseno"; String sen = "Seno"; if (unaFuncion == cos && numero.getFuncion() == sen) { numero.setDesplazamiento(numero.getDesplazamiento() + Math.PI / 2); numero.setFuncion(cos); } else if (unaFuncion == sen && numero.getFuncion() == cos) { numero.setDesplazamiento(numero.getDesplazamiento() - Math.PI / 2); numero.setFuncion(sen); } return(numero); }
/* * Defino cada numero como una clase con los valores: Amplitud, Desplazamiento, Funcion * La fase la tengo a parte ya que es igual para ambas y no cambia en ninguna cuenta * Usando la fase, quedaria represantado como: numero = Amplitud * Funcion(Fase*t + Desplazamiento) * * */ public String OperarFasores(FuncionTrigonometrica numero1, FuncionTrigonometrica numero2, String resultadoDeseado, double W, Func <Complex, Complex, Complex> operacion) { String cos = "Coseno"; String sen = "Seno"; FuncionTrigonometrica nro1; FuncionTrigonometrica nro2; Operaciones operador = new Operaciones(); if (numero1.getAmplitud() <= 0 && numero2.getAmplitud() <= 0) { return("0"); } if (resultadoDeseado == cos) { nro1 = pasar(numero1, cos); nro2 = pasar(numero2, cos); } else if (resultadoDeseado == sen) { nro1 = pasar(numero1, sen); nro2 = pasar(numero2, sen); } else { return("0"); } Complex n1 = operador.ObtenerBinomicoDePolar(nro1.getAmplitud(), nro1.getDesplazamiento()); Complex n2 = operador.ObtenerBinomicoDePolar(nro2.getAmplitud(), nro2.getDesplazamiento()); Complex n3 = operacion(n1, n2); if (n3.Magnitude == 0) { return("0"); } return(n3.Magnitude.ToString() + "*" + resultadoDeseado + "(" + W.ToString() + " * t + " + n3.Phase.ToString() + ")"); }