added orbit correction + mqx q throttle moderation

This commit is contained in:
2026-05-05 03:34:55 -04:00
parent 73868e47db
commit b554b94428
20 changed files with 186 additions and 39 deletions
+69
View File
@@ -174,6 +174,75 @@ function CalculateMultiStageBurnDuration{
}
}
function CalculateMultiStageBurnDurationV2{
parameter dv.
if ship:STAGEDELTAV(ship:stagenum):current >= dv {
return CalculateBurnDuration(dv, GetIsp(), ship:mass, GetMaxMassFlow()).
}else{
local bT is 0.
local remDv is dv.
from {local s is ship:stagenum. } until s = -1 step { set s to s-1.} do {
if remDv <= 0 {
return bT.
}
local cdv is ship:stagedeltav(s):current.
local cmass is GetMassOfStage(s).
local cflow is GetMaxMassFlowForStage(s).
local cisp is GetIspForStage(s).
local sdv is 0.
if cdv >= remDv {
set sdv to remDv.
}else{
set sdv to cdv.
}
set bT to bT + CalculateBurnDuration(sdv, cisp, cmass, cflow).
set remDv to remDv - cdv.
}
return bT.
}
}
function GetPerStageBurnData{
parameter pressure is 0.
local data is list().
local i is 0.
until i >= ship:stagenum {
data:add(lex()).
set data[i]["dv"] to ship:stagedeltav(i):current.
set i to i + 1.
}
LIST PARTS IN allP.
for p in allP {
IF p:ISTYPE("Engine")
{
local t is p:POSSIBLETHRUSTAT(pressure).
if data[p:stage]:haskey("thrust") {
set t to t + data[p:stage]["thrust"].
}
set data[p:stage]["thrust"] to t.
}
if p:DECOUPLEDIN < p:stage or p:DECOUPLEDIN = p:stage {
local m is p:mass.
print "s: " + p:stage + " d: " + p:DECOUPLEDIN + " n: " + p:name.
local s is max(0, p:stage).
if data[s]:haskey("mass") {
set m to m + data[s]["mass"].
}
set data[s]["mass"] to m.
}
}
set i to 0.
until i >= ship:stagenum {
if i = 0 {
set data[i]["totalMass"] to data[i]["mass"].
} else {
set data[i]["totalMass"] to data[i]["mass"] + data[i - 1]["totalMass"].
}
set i to i+1.
}
return data.
}
function GetThrustOfStage {
parameter st, p is 0.