public void CalcularNuevaRotacion(ISateliteData data) { if (data.ActitudSolicitada != ActitudRotacion.Ninguna) { GestionarCambioDeRotacion(data); } if ((maniobra != null) && (maniobra.ManiobraCompletada)) { data.Actitud = maniobra.SiguienteActitud; maniobra = null; } switch (data.Actitud) { case ActitudRotacion.CaidaLibre: break; case ActitudRotacion.Maniobrando: data.Orientacion = maniobra.CalcularNuevaOrientacion(); break; case ActitudRotacion.EnfocadoATierra: data.Orientacion = CalcularOrientacionATierra(data); break; case ActitudRotacion.Orbital: data.Orientacion = CalcularOrientacionOrbital(data); break; default: throw new ArgumentException("Actitud no implementada en CalculadorRotacion2"); } }
private void OrientacionOrbital(ISateliteData data) { data.Actitud = ActitudRotacion.Maniobrando; Vector orientacion = CalcularOrientacionOrbital(data); maniobra = factory.CreateManiobra(ActitudRotacion.Orbital, data, orientacion); }
private void OrientacionATierra(ISateliteData data) { data.Actitud = ActitudRotacion.Maniobrando; Vector orientacion = CalcularOrientacionATierra(data); maniobra = factory.CreateManiobra(ActitudRotacion.EnfocadoATierra, data, orientacion); }