import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.simulation.listeners.SimulationListener;
import net.sf.openrocket.util.BugException;
+import net.sf.openrocket.util.GeodeticComputationStrategy;
import net.sf.openrocket.util.Monitorable;
+import net.sf.openrocket.util.WorldCoordinate;
/**
* A holder class for the simulation conditions. These include conditions that do not change
/** Launch rod direction, 0 = upwind, PI = downwind. */
private double launchRodDirection = 0;
-
- private double launchAltitude = 0;
- private double launchLatitude = 45;
+ // TODO: Depreciate these and use worldCoordinate only.
+ //private double launchAltitude = 0;
+ //private double launchLatitude = 45;
+ //private double launchLongitude = 0;
+ private WorldCoordinate launchSite = new WorldCoordinate(0, 0, 0);
+ private GeodeticComputationStrategy geodeticComputation = GeodeticComputationStrategy.SPHERICAL;
private WindModel windModel;
+
public AerodynamicCalculator getAerodynamicCalculator() {
return aerodynamicCalculator;
}
this.aerodynamicCalculator = aerodynamicCalculator;
}
-
public MassCalculator getMassCalculator() {
return massCalculator;
}
}
- public double getLaunchAltitude() {
- return launchAltitude;
+ public WorldCoordinate getLaunchSite() {
+ return this.launchSite;
}
-
- public void setLaunchAltitude(double launchAltitude) {
- this.launchAltitude = launchAltitude;
+ public void setLaunchSite(WorldCoordinate site) {
+ if (this.launchSite.equals(site))
+ return;
+ this.launchSite = site;
this.modID++;
}
- public double getLaunchLatitude() {
- return launchLatitude;
+ public GeodeticComputationStrategy getGeodeticComputation() {
+ return geodeticComputation;
}
-
- public void setLaunchLatitude(double launchLatitude) {
- this.launchLatitude = launchLatitude;
+ public void setGeodeticComputation(GeodeticComputationStrategy geodeticComputation) {
+ if (this.geodeticComputation == geodeticComputation)
+ return;
+ if (geodeticComputation == null) {
+ throw new IllegalArgumentException("strategy cannot be null");
+ }
+ this.geodeticComputation = geodeticComputation;
this.modID++;
}
public void setGravityModel(GravityModel gravityModel) {
- if (this.gravityModel != null)
- this.modIDadd += this.gravityModel.getModID();
+ //if (this.gravityModel != null)
+ // this.modIDadd += this.gravityModel.getModID();
this.modID++;
this.gravityModel = gravityModel;
}
}
+
+
// TODO: HIGH: Make cleaner
public List<SimulationListener> getSimulationListenerList() {
return simulationListeners;
@Override
public int getModID() {
+ //return (modID + modIDadd + rocket.getModID() + windModel.getModID() + atmosphericModel.getModID() +
+ // gravityModel.getModID() + aerodynamicCalculator.getModID() + massCalculator.getModID());
return (modID + modIDadd + rocket.getModID() + windModel.getModID() + atmosphericModel.getModID() +
- gravityModel.getModID() + aerodynamicCalculator.getModID() + massCalculator.getModID());
+ aerodynamicCalculator.getModID() + massCalculator.getModID());
}