finally working landing script
This commit is contained in:
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user