private void CalcularReaccion() { Cantidad = cantidadInicial; LlenarTablaExperimental(); Reaccion d; CalcularReaccion(out d, Cantidad); DatosReaccion = d; TiempoReaccion = DatosReaccion.TiempoOxidacion; for (int i = 0; i < Reacciones.Count; i++) { Reacciones[i].TiempoReaccion = TiempoReaccion; if (Reacciones[i].GetType() == typeof(ReaccionCantidadLiquido)) { reaccionCantidadAcido = (ReaccionCantidadLiquido)Reacciones[i]; } if (Reacciones[i].GetType() == typeof(ReaccionCambioTamanho)) { reaccionCantidadAzufre = (ReaccionCambioTamanho)Reacciones[i]; } } reaccionCantidadAcido.CambiarCantidadInicial(DatosReaccion.CantidadInicialAcido); reaccionCantidadAcido.CantidadFinal = DatosReaccion.CantidadFinalAcido; reaccionCantidadAzufre.CantidadInicial = DatosReaccion.CantidadInicialAzufre; reaccionCantidadAzufre.CantidadFinal = DatosReaccion.CantidadFinalAzufre; reaccionCantidadAzufre.gameObject.SetActive(false); }
public void CalcularReaccion(out Reaccion datos, float cantidadAcido) { Assert.IsTrue(cantidadAcido >= 10f, "La cantidad de acido inicial no debe ser menor a 10 ml."); Assert.IsTrue(cantidadAcido <= 150f, "La cantidad de acido inicial no debe ser mayor a 150 ml."); datos = new Reaccion(cantidadAcido); for (int i = 1; i < TablaExperimental.Count; i++) { if (cantidadAcido == TablaExperimental [i].CantidadInicialAcido) { datos = TablaExperimental [i]; break; } else if (TablaExperimental[i].CantidadInicialAcido > cantidadAcido && TablaExperimental[i - 1].CantidadFinalAcido < cantidadAcido) { Reaccion datosMin = TablaExperimental[i - 1]; Reaccion datosMax = TablaExperimental[i]; float rel = Mathf.Abs(datos.CantidadInicialAcido - datosMin.CantidadInicialAcido) / Mathf.Abs(datosMax.CantidadFinalAcido - datosMin.CantidadInicialAcido); datos.TiempoOxidacion = rel * (datosMax.TiempoOxidacion - datosMin.TiempoOxidacion) + datosMin.TiempoOxidacion; datos.CantidadFinalAzufre = rel * (datosMax.CantidadFinalAzufre - datosMin.CantidadFinalAzufre) + datosMin.CantidadFinalAzufre; datos.CantidadFinalAcido = rel * (datosMax.CantidadFinalAcido - datosMin.CantidadFinalAcido) + datosMin.CantidadFinalAcido; DatosReaccion = datos; break; } } }
public Respuesta <Dato> Reaccionar(TipoReaccion tipo, long referencia, Reaccion reaccion, long?referenciaComentario) { JObject prms = new JObject(); prms.Add("tipo", tipo.GetStringValue()); prms.Add("referencia", referencia); prms.Add("reaccion", reaccion.GetStringValue()); prms.Add("ref_comentario", referenciaComentario); string rsp = base.ProcesarOperacion(TipoOperacion.Servicio.GetStringValue(), NOMBRE_REACCIONAR, DOMINIO_OPERACION, prms.ToString(Formatting.None)); var entityRsp = JsonConvert.DeserializeObject <YRespuesta <YDato> >(rsp); return(EntitiesMapper.GetRespuestaFromEntity <Dato, YDato>(entityRsp, EntitiesMapper.GetModelFromEntity <Dato, YDato>(entityRsp.Datos))); }
public void LlenarTablaExperimental() { TablaExperimental = new List <Reaccion> (); double[] acidoAntes = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150 }; double[] tiempos = { 1, 2.2, 2.9, 3.7, 4.6, 5.1, 5.9, 6.5, 7.9, 8.4, 9.6, 9.7, 9.7, 9.7, 9.7 }; double[] azufre = { 2.3, 2.1, 1.85, 1.73, 1.61, 1.54, 1.32, 0.9, 0, 0, 0, 0, 0, 0, 0 }; double[] acidoDespues = { 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 40, 50, 60, 70 }; for (int i = 0; i < tiempos.Length; i++) { Reaccion r = new Reaccion(); r.CantidadInicialAzufre = 2.4f; r.CantidadInicialAcido = (float)acidoAntes [i]; r.TiempoOxidacion = (float)tiempos [i] * 60f; r.CantidadFinalAzufre = (float)azufre[i]; r.CantidadFinalAcido = (float)acidoDespues[i]; TablaExperimental.Add(r); } }