Skip to content
Snippets Groups Projects
Commit 0ce7bc13 authored by Jonathan Guinet's avatar Jonathan Guinet
Browse files

Attitude Law can be selected in OrbitModel class

parent d91dfd41
No related branches found
No related tags found
No related merge requests found
...@@ -65,14 +65,29 @@ import org.orekit.utils.AngularDerivativesFilter; ...@@ -65,14 +65,29 @@ import org.orekit.utils.AngularDerivativesFilter;
*/ */
public class OrbitModel { public class OrbitModel {
/** Flag to change Attitude Law (by default Nadir Pointing Yaw Compensation). */
private boolean UserDefinedLOFTransform;
/** User defined Roll law. */
private double[] LOFTransformRollPoly; private double[] LOFTransformRollPoly;
/** User defined Pitch law. */
private double[] LOFTransformPitchPoly; private double[] LOFTransformPitchPoly;
/** User defined Yaw law. */
private double[] LOFTransformYawPoly; private double[] LOFTransformYawPoly;
/** reference date */
private AbsoluteDate refDate; private AbsoluteDate refDate;
/** attitude Provider */
AttitudeProvider attitudeProvider;
public OrbitModel() {
UserDefinedLOFTransform = false;
}
public static void addSatellitePV(TimeScale gps, Frame eme2000, Frame itrf, public static void addSatellitePV(TimeScale gps, Frame eme2000, Frame itrf,
ArrayList<TimeStampedPVCoordinates> satellitePVList, ArrayList<TimeStampedPVCoordinates> satellitePVList,
...@@ -148,6 +163,8 @@ public class OrbitModel { ...@@ -148,6 +163,8 @@ public class OrbitModel {
public void setLOFTransform(double[] rollPoly, double[] pitchPoly, public void setLOFTransform(double[] rollPoly, double[] pitchPoly,
double[] yawPoly, AbsoluteDate refDate) { double[] yawPoly, AbsoluteDate refDate) {
this.UserDefinedLOFTransform = true;
LOFTransformRollPoly = rollPoly.clone(); LOFTransformRollPoly = rollPoly.clone();
LOFTransformPitchPoly = pitchPoly.clone(); LOFTransformPitchPoly = pitchPoly.clone();
LOFTransformYawPoly = yawPoly.clone(); LOFTransformYawPoly = yawPoly.clone();
...@@ -190,22 +207,26 @@ public class OrbitModel { ...@@ -190,22 +207,26 @@ public class OrbitModel {
public AttitudeProvider createAttitudeProvider(BodyShape earth, Orbit orbit) public AttitudeProvider createAttitudeProvider(BodyShape earth, Orbit orbit)
throws OrekitException { throws OrekitException {
LOFType type = LOFType.VVLH;
ArrayList<TimeStampedAngularCoordinates> list = new ArrayList<TimeStampedAngularCoordinates>(); if (this.UserDefinedLOFTransform) {
LOFType type = LOFType.VVLH;
for (double shift = -10.0; shift < +10.0; shift += 1e-2) { ArrayList<TimeStampedAngularCoordinates> list = new ArrayList<TimeStampedAngularCoordinates>();
list.add(new TimeStampedAngularCoordinates(refDate.shiftedBy(shift),
getOffset(earth, orbit, for (double shift = -10.0; shift < +10.0; shift += 1e-2) {
shift), list.add(new TimeStampedAngularCoordinates(refDate
Vector3D.ZERO, .shiftedBy(shift), getOffset(earth, orbit, shift),
Vector3D.ZERO)); Vector3D.ZERO,
} Vector3D.ZERO));
}
TabulatedLofOffset tabulated = new TabulatedLofOffset(orbit TabulatedLofOffset tabulated = new TabulatedLofOffset(orbit
.getFrame(), type, list, 2, AngularDerivativesFilter.USE_R); .getFrame(), type, list, 2, AngularDerivativesFilter.USE_R);
return tabulated; return tabulated;
} else {
return new YawCompensation(orbit.getFrame(), new NadirPointing(orbit.getFrame(), earth));
}
} }
public Propagator createPropagator(BodyShape earth, public Propagator createPropagator(BodyShape earth,
...@@ -213,10 +234,9 @@ public class OrbitModel { ...@@ -213,10 +234,9 @@ public class OrbitModel {
Orbit orbit) Orbit orbit)
throws OrekitException { throws OrekitException {
AttitudeProvider attidudeProvider = createAttitudeProvider(earth, AttitudeProvider attitudeProvider = createAttitudeProvider(earth,orbit);
orbit);
SpacecraftState state = new SpacecraftState(orbit, attidudeProvider SpacecraftState state = new SpacecraftState(orbit, attitudeProvider
.getAttitude(orbit, orbit.getDate(), orbit.getFrame()), 1180.0); .getAttitude(orbit, orbit.getDate(), orbit.getFrame()), 1180.0);
// numerical model for improving orbit // numerical model for improving orbit
...@@ -243,7 +263,7 @@ public class OrbitModel { ...@@ -243,7 +263,7 @@ public class OrbitModel {
.getMoon())); .getMoon()));
numericalPropagator.setOrbitType(type); numericalPropagator.setOrbitType(type);
numericalPropagator.setInitialState(state); numericalPropagator.setInitialState(state);
numericalPropagator.setAttitudeProvider(attidudeProvider); numericalPropagator.setAttitudeProvider(attitudeProvider);
return numericalPropagator; return numericalPropagator;
} }
...@@ -253,7 +273,9 @@ public class OrbitModel { ...@@ -253,7 +273,9 @@ public class OrbitModel {
AbsoluteDate maxDate, double step) AbsoluteDate maxDate, double step)
throws OrekitException { throws OrekitException {
Propagator propagator = new KeplerianPropagator(orbit); Propagator propagator = new KeplerianPropagator(orbit);
propagator.setAttitudeProvider(createAttitudeProvider(earth, orbit)); propagator.setAttitudeProvider(createAttitudeProvider(earth, orbit));
propagator.propagate(minDate); propagator.propagate(minDate);
final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>(); final List<TimeStampedPVCoordinates> list = new ArrayList<TimeStampedPVCoordinates>();
propagator.setMasterMode(step, new OrekitFixedStepHandler() { propagator.setMasterMode(step, new OrekitFixedStepHandler() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment