ConfigureFrames
De Wiki
public class ConfigureFrames { public static void main(String[] args) throws PatriusException { // Patrius Dataset initialization (needed for example to get the UTC time) PatriusDataset.addResourcesFromPatriusDataset(); // Date of the orbit (given in UTC time scale) final TimeScale TUC = TimeScalesFactory.getUTC(); final AbsoluteDate date = new AbsoluteDate("2010-01-01T12:00:00.000", TUC); // First configuration as simple as possible ... FramesConfiguration config = getSimplifiedConfiguration(false); FramesFactory.setConfiguration(config); // Corresponding GCRF frame final Frame gcrfNoPN = FramesFactory.getGCRF(); // Corresponding GCRF frame final Frame icrfNoPN = FramesFactory.getCIRF(); // Printing transform frame information print (gcrfNoPN, icrfNoPN, date); // Second configuration with precession and nutation ... config = getSimplifiedConfiguration(true); FramesFactory.setConfiguration(config); // GCRF frame final Frame gcrfPN = FramesFactory.getGCRF(); // GCRF frame final Frame icrfPN = FramesFactory.getCIRF(); // Printing frame information print (gcrfPN, icrfPN, date); } /** * Method to print results (transformation from frame1 to frame2). * @param frame1 First frame * @param frame2 Second frame * @param date Date when we want to compare * @throws OrekitException */ private static void print ( Frame frame1, final Frame frame2, final AbsoluteDate date ) throws PatriusException { final Transform transform = frame1.getTransformTo(frame2, date); System.out.println(); System.out.println("Psi: "+transform.getRotation().getAngles(RotationOrder.ZYX)[0]); System.out.println("Teta: "+transform.getRotation().getAngles(RotationOrder.ZYX)[1]); System.out.println("Phi: "+transform.getRotation().getAngles(RotationOrder.ZYX)[2]); } /** * Method to configure frames configuration. * @param isPrecNut if true => precession & nutation * @return frame configuration object */ private static FramesConfiguration getSimplifiedConfiguration( final boolean isPrecNut ) { // Configurations builder final FramesConfigurationBuilder builder = new FramesConfigurationBuilder(); // Tides and libration final TidalCorrectionModel tides = TidalCorrectionModelFactory.NO_TIDE; final LibrationCorrectionModel lib = LibrationCorrectionModelFactory.NO_LIBRATION; // Polar Motion final PolarMotion defaultPolarMotion = new PolarMotion(false, tides, lib, SPrimeModelFactory.NO_SP); // Diurnal rotation final DiurnalRotation defaultDiurnalRotation = new DiurnalRotation(tides, lib); // Precession Nutation PrecessionNutation precNut = null; if ( isPrecNut ) { precNut = new PrecessionNutation(false, PrecessionNutationModelFactory.PN_IERS2010_INTERPOLATED_NON_CONSTANT); } else { precNut = new PrecessionNutation(false, PrecessionNutationModelFactory.NO_PN); } builder.setDiurnalRotation(defaultDiurnalRotation); builder.setPolarMotion(defaultPolarMotion); builder.setPrecessionNutation(precNut); builder.setEOPHistory(new NoEOP2000History()); return builder.getConfiguration(); } }