finally working landing script

This commit is contained in:
2025-11-24 23:41:49 -05:00
parent b90b0157e4
commit 6fe0ecf988
5 changed files with 120 additions and 49 deletions

View File

@@ -4,6 +4,17 @@ declare function WaitForEngineStart{
wait until AnyEngineActive().
}
declare function GetDrag{
parameter localGravity.
return ship:sensors:acc:mag + localGravity.
}
declare function GetDragDir{
parameter localGravity.
parameter dir.
return vDot(ship:sensors:acc, dir) + localGravity.
}
declare function AnyEngineActive{
list engines in allEngines.
for eng in allEngines{
@@ -41,15 +52,7 @@ declare function GetMaxMassFlow{
return sum.
}
declare function CalculateSuicideBurnAltitude
{
parameter vertSpeed.
parameter localGravity.
parameter tgtAltitude is 0.
local burnAltitude is ((vertSpeed^2) / (2 * CalculateAverageAcceleration(localGravity))).
return burnAltitude + tgtAltitude.
}
declare function CalculateSuicideBurnDuration
@@ -79,9 +82,48 @@ declare function CalculateBurnDuration
}
declare function CalculateAverageAcceleration{
declare function CalculateSuicideBurnAltitude
{
parameter vertSpeed.
parameter localGravity.
return ((ship:maxthrust * 1000) / ship:mass) - localGravity.
parameter tgtAltitude is 0.0.
parameter drag is 0.0.
local vertAcc is CalculateAverageDecceleration(localGravity).
local burnAltitude is ((vertSpeed^2) / (2 * (vertAcc))).
return burnAltitude + tgtAltitude.
}
declare function CalculateSuicideBurnAltitudeV2
{
parameter vertSpeed.
parameter localGravity.
parameter tgtAltitude is 0.0.
local vs is vertSpeed * -1.
local a is CalculateAverageDecceleration(localGravity).
local dt is 0.05.
local result is 0.0.
local h is alt:radar.
until vs <= 0 {
set vs to vs + a * dt.
set result to result + vs * dt.
if result > h { return result. }
}
return result.
}
declare function CalculateAverageDecceleration{
parameter localGravity.
local maxVertAcc is (ship:availablethrust / ship:mass) - localGravity.
return maxVertAcc + localGravity.
}
declare function GetLocalGravity{
@@ -97,11 +139,11 @@ declare function CalculateTimeToImpact{
parameter vertSpeed.
parameter curAltitude.
parameter gravity.
parameter tgtAltitude is 0.
parameter tgtAltitude is 0.0.
if gravity <= 0 or curAltitude <= 0{
print "[warn]: invalid altitude or gravity.".
return 0.
return 0.0.
}
local vs is abs(vertSpeed).