node based orbit circularization
This commit is contained in:
+15
-1
@@ -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.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user