Improvements and gui to ascent script

This commit is contained in:
2026-05-21 01:32:58 -07:00
parent 6822923238
commit a314cdaa62
15 changed files with 405 additions and 226 deletions
+89
View File
@@ -0,0 +1,89 @@
// ═══════════════════════════════════════════════════════════
// maneuver.ks
// Utility functions related to maneuvers.
//
// Usage:
// executeNode(nd: node)
// ═══════════════════════════════════════════════════════════
// #include staging
run once staging.
function executeNode {
parameter nd is node(0, 0, 0, 0).
print "boof".
if nd:deltav:mag = 0 {
print "Empty node".
return.
}
local burnTime to calcBurnTime(nd:deltav:mag).
print "Node in: " + round(nd:eta) + "s, dV: " + round(nd:deltav:mag, 1) + " m/s, burn time: " + round(burnTime, 1) + "s".
// wait for node to be close then align to vector
wait until nd:eta <= burnTime / 2 + 60.
local np to nd:deltav.
lock steering to np.
wait until vang(ship:facing:vector, nd:deltav) < 1.
print "Maneuver vector lined up".
// wait until burn
wait until nd:eta <= burnTime / 2.
print "Burn time".
// ── Snapshot initial dV for overburn detection
local dv0 to nd:deltav.
local throttleSet to 0.
lock throttle to throttleSet.
// ag1 off.
// until ag1 {
until False {
local maxAcc to ship:maxThrust / ship:mass.
set throttleSet to min(nd:deltav:mag / maxAcc, 1).
set np to nd:deltav.
// ── Overburn detection
if vdot(dv0, nd:deltav) < 0 {
print "Overburn detected. Cutting throttle.".
lock throttle to 0.
break.
}
// ── Residual dV negligible
if nd:deltav:mag < 0.1 {
wait until vdot(dv0, nd:deltav) < 0.5.
lock throttle to 0.
break.
}
wait 0.
}
lock throttle to 0.
unlock throttle.
unlock steering.
remove nd.
}
function createCircularizationNodeAp {
local rBurn to body:radius + apoapsis.
local vTarget to sqrt(body:mu / rBurn).
local dvEst to vTarget - velocityat(ship, time:seconds + eta:apoapsis):orbit:mag.
local nd to node(time:seconds + eta:apoapsis, 0, 0, dvEst).
add nd.
return nd.
}
function createCircularizationNodePe {
local rBurn to body:radius + periapsis.
local vTarget to sqrt(body:mu / rBurn).
local dvEst to vTarget - velocityat(ship, time:seconds + eta:periapsis):orbit:mag.
local nd to node(time:seconds + eta:periapsis, 0, 0, dvEst).
add nd.
return nd.
}