node based orbit circularization

This commit is contained in:
2026-04-21 01:21:04 -04:00
parent 25212af055
commit 2b7f1ceed0
4 changed files with 52 additions and 21 deletions
+15 -1
View File
@@ -60,6 +60,9 @@ declare function Ascent{
}else if circ = 3 {
lock steering to heading(head, 0, 270).
CreateCircularizationNode(apoapsis).
// if periapsis < targetOrbit and eta:apoapsis < orbit:period / 2{
// CreateCircularizationNode(apoapsis).
// }
}
set isDone to true.
@@ -115,6 +118,17 @@ local function CreateCircularizationNode{
wait until altitude > 80000.
local burnDv is CalculateCircularizationDV(tgt, orbit:semimajoraxis).
set circNode to Node(eta:apoapsis, 0, 0, burnDv).
set circNode to Node(time:seconds + eta:apoapsis, 0, 0, burnDv).
add circNode.
wait 0.01.
lock steering to circNode:burnvector.
local burnDuration is CalculateMultiStageBurnDuration(burnDv).
wait until circNode:eta <= burnDuration /2.
lock throttle to 1.
wait until nextNode:deltav:mag <= 10.
lock throttle to 0.5.
wait until NEXTNODE:deltav:mag <= 1.
remove nextNode.
lock throttle to 0.
wait until throttle = 0.
}
+5 -20
View File
@@ -7,26 +7,11 @@ declare function Lerp{
declare function Map{
parameter value.
parameter low1.
parameter high1.
parameter low2.
parameter high2.
return low2 + (high2 - low2) * ((value - low1) / (high1 - low1)).
}
declare function ApproximateExp {
parameter x.
local result is 1.0.
local xPower is 1.0.
local nFact is 1.0.
// Loop 4 times (for terms 1 through 4, total 5 terms)
from { local n is 1.} until n = 5 step {set n to n + 1.} do {
SET xPower TO xPower * x.
SET nFact TO nFact * n.
SET result TO result + (xPower / nFact).
}
RETURN result.
parameter a1.
parameter a2.
parameter b1.
parameter b2.
return b1 + (b2 - b1) * ((value - a1) / (a2 - a1)).
}
declare function EaseOutExpo {