mirror of
https://github.com/Krafpy/KSP-MGA-Planner.git
synced 2025-12-12 15:49:59 -08:00
Starting mean anomalies for steps.
This commit is contained in:
@@ -127,6 +127,14 @@ class TrajectoryCalculator {
|
|||||||
const { minLegDuration } = this.config;
|
const { minLegDuration } = this.config;
|
||||||
infos.duration = Math.max(minLegDuration, infos.duration);
|
infos.duration = Math.max(minLegDuration, infos.duration);
|
||||||
}
|
}
|
||||||
|
computeStartingMeanAnomalies() {
|
||||||
|
for (let i = 1; i < this.steps.length - 1; i++) {
|
||||||
|
const step = this.steps[i];
|
||||||
|
const { orbitElts, angles } = step;
|
||||||
|
const e = orbitElts.eccentricity;
|
||||||
|
step.startM = Physics3D.meanAnomalyFromTrueAnomaly(angles.begin, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
recomputeLegsSecondArcs() {
|
recomputeLegsSecondArcs() {
|
||||||
for (let i = 0; i < this._secondArcsData.length; i++) {
|
for (let i = 0; i < this._secondArcsData.length; i++) {
|
||||||
const data = this._secondArcsData[i];
|
const data = this._secondArcsData[i];
|
||||||
@@ -160,6 +168,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: { begin: 0, end: TWO_PI },
|
drawAngles: { begin: 0, end: TWO_PI },
|
||||||
duration: 0,
|
duration: 0,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
maneuvre: maneuvre
|
maneuvre: maneuvre
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -198,7 +207,8 @@ class TrajectoryCalculator {
|
|||||||
angles: angles,
|
angles: angles,
|
||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
this._vesselState = periapsisState;
|
this._vesselState = periapsisState;
|
||||||
this._secondArcsData.push({
|
this._secondArcsData.push({
|
||||||
@@ -284,6 +294,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
flyby: flybyDetails
|
flyby: flybyDetails
|
||||||
});
|
});
|
||||||
const exitState = Physics3D.orbitElementsToState(flybyOrbit, body, exitAngle);
|
const exitState = Physics3D.orbitElementsToState(flybyOrbit, body, exitAngle);
|
||||||
@@ -339,6 +350,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: arcDuration,
|
duration: arcDuration,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
maneuvre: maneuvre
|
maneuvre: maneuvre
|
||||||
});
|
});
|
||||||
this._vesselState = encounterState;
|
this._vesselState = encounterState;
|
||||||
@@ -376,6 +388,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: arcDuration,
|
duration: arcDuration,
|
||||||
dateOfStart: exitDate,
|
dateOfStart: exitDate,
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
this._vesselState = preDSMState;
|
this._vesselState = preDSMState;
|
||||||
this._preDSMState = preDSMState;
|
this._preDSMState = preDSMState;
|
||||||
@@ -408,7 +421,8 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: { begin: 0, end: soiExitAngle },
|
drawAngles: { begin: 0, end: soiExitAngle },
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
maneuvre: maneuvre
|
startM: 0,
|
||||||
|
maneuvre: maneuvre,
|
||||||
});
|
});
|
||||||
const exitState = Physics3D.orbitElementsToState(ejOrbit, depBody, soiExitAngle);
|
const exitState = Physics3D.orbitElementsToState(ejOrbit, depBody, soiExitAngle);
|
||||||
this._vesselState = exitState;
|
this._vesselState = exitState;
|
||||||
@@ -424,7 +438,8 @@ class TrajectoryCalculator {
|
|||||||
angles: { begin: 0, end: 0 },
|
angles: { begin: 0, end: 0 },
|
||||||
drawAngles: { begin: 0, end: TWO_PI },
|
drawAngles: { begin: 0, end: TWO_PI },
|
||||||
duration: 0,
|
duration: 0,
|
||||||
dateOfStart: lerp(dateMin, dateMax, dateParam)
|
dateOfStart: lerp(dateMin, dateMax, dateParam),
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ class TrajectoryOptimizer extends WorkerEnvironment {
|
|||||||
this._deltaVs[i] = this._newDeltaVs[i];
|
this._deltaVs[i] = this._newDeltaVs[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this._bestTrajectory.computeStartingMeanAnomalies();
|
||||||
sendResult({
|
sendResult({
|
||||||
popChunk: this._evolver.popChunk,
|
popChunk: this._evolver.popChunk,
|
||||||
fitChunk: this._evolver.fitChunk,
|
fitChunk: this._evolver.fitChunk,
|
||||||
|
|||||||
@@ -194,6 +194,15 @@ class TrajectoryCalculator {
|
|||||||
infos.duration = Math.max(minLegDuration, infos.duration);
|
infos.duration = Math.max(minLegDuration, infos.duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public computeStartingMeanAnomalies(){
|
||||||
|
for(let i = 1; i < this.steps.length-1; i++){ // ignore begin and end circular orbits
|
||||||
|
const step = this.steps[i];
|
||||||
|
const {orbitElts, angles} = step;
|
||||||
|
const e = orbitElts.eccentricity;
|
||||||
|
step.startM = Physics3D.meanAnomalyFromTrueAnomaly(angles.begin, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recomputes the second arc of a all legs accounting this time for SOI enter points,
|
* Recomputes the second arc of a all legs accounting this time for SOI enter points,
|
||||||
* thus providing a more precise visualization of the orbit.
|
* thus providing a more precise visualization of the orbit.
|
||||||
@@ -247,6 +256,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: {begin: 0, end: TWO_PI},
|
drawAngles: {begin: 0, end: TWO_PI},
|
||||||
duration: 0,
|
duration: 0,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
maneuvre: maneuvre
|
maneuvre: maneuvre
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -317,7 +327,8 @@ class TrajectoryCalculator {
|
|||||||
angles: angles,
|
angles: angles,
|
||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
// Store the state of the vessel at periapsis for further
|
// Store the state of the vessel at periapsis for further
|
||||||
@@ -457,6 +468,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
flyby: flybyDetails
|
flyby: flybyDetails
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -536,6 +548,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: arcDuration,
|
duration: arcDuration,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
|
startM: 0,
|
||||||
maneuvre: maneuvre
|
maneuvre: maneuvre
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -598,6 +611,7 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: drawAngles,
|
drawAngles: drawAngles,
|
||||||
duration: arcDuration,
|
duration: arcDuration,
|
||||||
dateOfStart: exitDate,
|
dateOfStart: exitDate,
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
// Store the pre-DSM state to use it in the second arc maneuver calculation
|
// Store the pre-DSM state to use it in the second arc maneuver calculation
|
||||||
@@ -656,7 +670,8 @@ class TrajectoryCalculator {
|
|||||||
drawAngles: {begin: 0, end: soiExitAngle},
|
drawAngles: {begin: 0, end: soiExitAngle},
|
||||||
duration: tof,
|
duration: tof,
|
||||||
dateOfStart: this._lastStepEndDate,
|
dateOfStart: this._lastStepEndDate,
|
||||||
maneuvre: maneuvre
|
startM: 0,
|
||||||
|
maneuvre: maneuvre,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Compute the state of the vessel relative to the exited body when exiting its SOI
|
// Compute the state of the vessel relative to the exited body when exiting its SOI
|
||||||
@@ -679,7 +694,8 @@ class TrajectoryCalculator {
|
|||||||
angles: {begin: 0, end: 0},
|
angles: {begin: 0, end: 0},
|
||||||
drawAngles: {begin: 0, end: TWO_PI},
|
drawAngles: {begin: 0, end: TWO_PI},
|
||||||
duration: 0,
|
duration: 0,
|
||||||
dateOfStart: lerp(dateMin, dateMax, dateParam)
|
dateOfStart: lerp(dateMin, dateMax, dateParam),
|
||||||
|
startM: 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,6 +110,8 @@ class TrajectoryOptimizer extends WorkerEnvironment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._bestTrajectory.computeStartingMeanAnomalies();
|
||||||
|
|
||||||
sendResult({
|
sendResult({
|
||||||
popChunk: this._evolver.popChunk,
|
popChunk: this._evolver.popChunk,
|
||||||
fitChunk: this._evolver.fitChunk,
|
fitChunk: this._evolver.fitChunk,
|
||||||
|
|||||||
1
src/types.d.ts
vendored
1
src/types.d.ts
vendored
@@ -215,6 +215,7 @@ type TrajectoryStep = {
|
|||||||
drawAngles: ArcEndsAngles,
|
drawAngles: ArcEndsAngles,
|
||||||
dateOfStart: number,
|
dateOfStart: number,
|
||||||
duration: number,
|
duration: number,
|
||||||
|
startM: number,
|
||||||
maneuvre?: ManeuvreInfo,
|
maneuvre?: ManeuvreInfo,
|
||||||
flyby?: FlybyInfo
|
flyby?: FlybyInfo
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user