The subject of this post is a generalisation of the well-known ideal rocket equation
[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
to a Keplerian gravitational field. The resulting equations of motion are relevant to the calculation of optimal launch trajectories (for bodies without atmospheres) and long-duration orbital insertion/escape burns.
Some background
Recently, I was asked to comment upon a derivation of Tsiolkovsky's ideal rocket equation. As I worked my way through the derivation (for the umpteenth time), I mused on the observation that I had often had when doing the same that the ideal rocket equation was derived in a 'flat' one-dimensional gravitational field, but that it should be quite possible to extend the derivation to two dimensions and to include a Keplerian gravitational field into the model framework. Not finding any derivations on the internet (although I'm sure this isn't an original extension of the classic Tsiolkovsky's rocket equation), I decided to sit down and work through the calculus to derive them for myself. This note captures the fruits of that endeavour - and applies it to a couple of particular cases:
Before going on to working though application of the generalised rocket equation to these particular cases, I need to work thought the development of the mathematical apparatus.
The maths
Many Orbiter fans will be familiar with the ideal rocket equation expressed in the form:
[MATH] \Delta V = v_e\,\log\frac{m_i}{m_f} [/MATH]
where [MATH]\Delta V[/MATH] is the change in velocity of the spacecraft; [MATH]v_e[/MATH] is the effective velocity of the exhaust gases (e.g., for the Delta Glider, 40,000 m/s); [MATH]m_i[/MATH] is the initial mass of the rocket; and, of course, [MATH]m_f[/MATH] is the final mass of the rocket.
Less familiar to most people will be the differential form of this equation which can be written as:
[MATH]m(t)\,\frac{d^2}{dt^2}x(t)=-v_e\,m'(t)[/MATH]
Here, [MATH]x(t)[/MATH] is just the position of the spacecraft as a function of time; [MATH]m(t)[/MATH] is the mass of the spacecraft at time [MATH]t[/MATH], and [MATH]x'(t)[/MATH] is the time rate of change of the mass of the spacecraft. The term on the left-hand side is just the force acting on the spacecraft; and the term on the right-hand side is conventionally called 'the thrust'. So, this equation expresses the not unexpected expression that "the force on the rocket equals the thrust from the rocket engines". With appropriate boundary conditions, this second equation represents exactly the same physical system as the first - albeit one that can be recognised as an 'equation of motion' for the spacecraft.
What one immediately notices, here is that cast in this form there gravitational forces have been neglected. If effective gravitational forces are low (because, for example, one executes a manoeuvre on a ballistic trajectory in deep space, or a low thrust manoeuvre in Low Earth Orbit). And in these cases, as most Orbiter uses will recognise, this assumption works just fine. However there are cases, usually where manoeuvres require long burn durations, where gravitational forces cannot be neglected. So, the question arises, how should one include gravity in this framework?
First, let's start off with the equations of motion for a spacecraft in a (two-dimensional) Keplerian gravitational field - absent any thrust:
[MATH]m\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH][MATH]m\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]
where [MATH]\mu[/MATH] is the gravitational constant ('GM') for the central gravitating body; [MATH]x(t)[/MATH] and [MATH]y(t)[/MATH] are the cartesian coordinates for the spacecraft at time [MATH]t[/MATH] with the gravitating body being located at the origin of the coordinate system. This equation is generally valid for objects with constant mass. But when a rocket fires its engines, it loses masses - so these equations of motion need to be modified to take into account the varying mass of the system. To do this we need an additional term on the right-hand side that takes into account the rocket's thrust:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]
Here, we have assumed that the thrust is entirely along the positive x-axis. This, then, is a more general representation of the ideal rocket equation for a spacecraft moving in a Keplerian gravitational field.
More generally, the equations of motion can be written as:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\cos\phi(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\sin\phi(t)[/MATH]
where [MATH]\phi(t)[/MATH] is the angle that the thrust vector makes with the x-axis. Generally when applying thrusts, the most efficient thing for us to apply thrust is along the prograde or retrograde vectors. In this case, the equations of motion can be written as:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{x'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{y'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH]
This, then, is our generalised version of the ideal rocket equation written in cartesian coordinates. Of course, it is a bit of a mess. But we can tidy things up a little by converting from cartesian coordinates to polar coordinates such that [MATH]x(t)=r(t)\cos\theta(t)[/MATH] and [MATH]x(t)=r(t)\sin\theta(t)[/MATH]. If we do that then, after a fair amount of manipulation, we get the following equations:
[MATH]\frac{d^2}{dt^2}r(t) = \left(r(t) \,\theta'(t)^2-\frac{\mu }{r(t)^2}\right)-v_e\frac{\,m'(t)}{m(t)}\frac{r'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH][MATH]\frac{d^2}{dt^2}\theta(t) = -2\frac{r'(t)\, \theta'(t)}{r(t)}-v_e\frac{\,m'(t)}{m(t)}\frac{\theta'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH]
For a particle moving such that [MATH]\theta'(t)[/MATH] is positive (i.e., moving in an anti-clockwise orbit when viewed from above) and with [MATH]v_e>0[/MATH], these equations describe the motion of a spacecraft executing a prograde burn in a Keplerian gravitational field. If we change the sign of [MATH]v_e[/MATH] they describe a spacecraft executing a retrograde burn.
These equations are a generalisation of the usual form of the ideal rocket equation - albeit with the constraint that rockets are fired in either the prograde or retrograde direction. Now to apply these equations to some specific cases.
Case I - launch trajectories from the Moon
Clearly, the above generalised equations of motion are considerably more intimidating than the standard ideal rocket equation
[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
and we certainly need some fairly specialised tools to solve differential equations
subject to appropriate boundary conditions. Needless to say, though, that such tools do exist and can be applied to fairly routinely solve these (rather ugly) equations of motion.
A case in point is the launch of a spacecraft into a prescribed orbit - e.g. a circular orbit. As many will know, for a given spacecraft with specific impulse and fuel flow rate, an efficient way to get into orbit is to specify a 'pitch program' that slowly tilts the spacecraft from a near vertical orientation towards the horizontal such that the thrust vector more or less tracks the spacecraft's prograde vector. This launch profile his is termed a gravity turn. But the question arises, how does one develop the 'best' pitch program that gives the perfect gravity turn without resorting to trial and error?.
Well, this is where the generalised ideal rocket equation (above) can be used to good effect. But because the equations of motion neglect atmospheric drag and lift, the equations as stated are best applied to spacecraft launching from slowly rotating bodies without atmospheres - e.g., the Moon.
So, for this particular example, we will focus on developing the 'pitch program' for launch of, say, a Delta Glider from the surface of the Moon and direct insertion into a circular orbit. To calculate this, we need to know a few things about the Delta Glider:
1. [MATH]v_e[/MATH] - the effective velocity of the engine exhaust. For the Delta Glider in its standard configuration this is 40,000 m/s. For current technology spacecraft, this is grossly unrepresentative of real engine capabilities - but for the purpose of this example, we'll stick with that number if for no other reason than everyone has a Delta Glider installed in their version of Orbiter.
2. [MATH]m'(t)[/MATH] - the rate at which the Delta Glider loses mass - which is equivalent to the negative of the rate at which the Delta Glider burns fuel. Now, although the Delta Glider can burn fuel at 8 kg/s as it turns out, at this maximum fuel burn rate, the perfect gravity turn calculation would have the Delta Glider inserted into a circular orbit with an altitude of around 5.5 km. This is a bit low. To increase the altitude of the circular orbit, one needs a lower fuel burn rate - in fact to enter into a 60 x 60 km circular orbit, one needs a fuel burn rate of around 2 kg/s. In fact, given the assumptions that we are making, the fuel rate controls our final orbital altitude. For a fuel burn rate of 2.000 kg/s, the theory says that we will insert into a circular orbit with orbital altitude of 58.0 km.
3. [MATH]m(0)[/MATH] - this is the initial total mass of the spacecraft at the instant that the pitch program and launch sequence is engaged. For a fully fuelled Delta Glider, its mass is 24,500 kg. But if we launch from Brighton Beach, say, we will need to hover off the ground and into the right attitude at the right elevation for launch. For reasons specific to the launch from Brighton Beach, and because it is 2.5 km below the Moon's mean radius. it is more appropriate to use a value of 24,323 kg which takes into account the fuel needed to hover up the 2.5 km to the Moon's mean altitude of 0.0 km at a vertical hover speed of 15 m/s.
Given these assumptions, we can now solve the ideal rocket equations of motion to calculate the 'pure' gravity turn that corresponds to those equations. Without going through the gory details of solving the problem, here are the results:
1. Time from launch to orbital insertion - 584 seconds.
2. Delta-V needed for launch 1,969 m/s.
3. Final orbit 58.0 x 58.0 km circular orbit.
4. Initial pitch angle of 87 degrees.
(Now a lot of you will be saying: "87 degree initial pitch angle for launching from the Moon in a Delta Glider? Say what!?". The reason why we have such a high initial pitch angle is that we are using just a quarter of the thrust that the Delta Glider can produce. We are using the fuel flow rate as way to control our altitude of our final circular orbit. Under the assumption of a constant fuel flow rate, we need just 2 kg/s to achieve an orbital altitude of 58 km. And with a quarter of its maximum thrust, the Delta Glider pretty much needs to be standing on its tail in order to execute a pure gravity turn manoeuvre to insert into the required circular orbit. Of course, if we start with a much higher initial thrust and then subsequently lower the thrust, we will have a much lower initial pitch angle. But that's not the example we are working with here.)
And here is the profile of altitude with time:
By the time the spacecraft has established a circular orbit, the Delta Glider is 400 km down range from Brighton Beach.
From the solution, we can also calculate the optimal pitch program corresponding to this solution which we can then insert in a configuration file for . The pitch program sets out the pitch angle as a function of either time or altitude. In our case, we choose to calculate pitch as function or altitude. And here in 100 metre increments is the resulting pitch program:
The numbers in the first column denote the altitude of the spacecraft (in km) above the Moon's mean radius of 1738 km; and the numbers in the second column indicate the pitch angle (in degrees) of the spacecraft at that altitude. Following this pitch program will insert the Delta Glider directly into a 58.0 x 58.0 km circular orbit.
Of course, slight errors will creep in to the trajectory in the absence of some form of automated guidance control. In practice, it makes sense to take over manual control for the last 60 seconds so of the launch. Doing so allows one to execute a near perfect gravity turn insertion into a circular orbit. Although one takes over manual control for the last minute or so of the manoeuvre, the pitch program does most of the hard work and sets the stage for finalising orbit insertion.
Following this pitch program manually is nigh on impossible. So, it needs to be set up as an automated process within, say, LaunchMFD. To do this, one has to add or augment a configuration file (DeltaGlider.cfg) for the Delta Glider in the \config\MFD\LaunchMFD folder as in:
All that remains now, is to set this scenario up in Orbiter and run the pitch program to see if the maths (and the calculated pitch program) actually works in practice. When I find a little more time, I'll assemble a short video demonstrating the effectiveness of the calculations.
I also have one more example tot work through - insertion into Low Earth Orbit when approaching Earth at a high hyperbolic approach velocity. But that too will have to wait until I have a little more time.
[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
to a Keplerian gravitational field. The resulting equations of motion are relevant to the calculation of optimal launch trajectories (for bodies without atmospheres) and long-duration orbital insertion/escape burns.
Some background
Recently, I was asked to comment upon a derivation of Tsiolkovsky's ideal rocket equation. As I worked my way through the derivation (for the umpteenth time), I mused on the observation that I had often had when doing the same that the ideal rocket equation was derived in a 'flat' one-dimensional gravitational field, but that it should be quite possible to extend the derivation to two dimensions and to include a Keplerian gravitational field into the model framework. Not finding any derivations on the internet (although I'm sure this isn't an original extension of the classic Tsiolkovsky's rocket equation), I decided to sit down and work through the calculus to derive them for myself. This note captures the fruits of that endeavour - and applies it to a couple of particular cases:
- Optimal gravity turn launch of a craft from the Moon to Low Lunar Orbit; and
- Insertion into a circular orbit around the Earth from a high-velocity hyperbolic approach trajectory.
Before going on to working though application of the generalised rocket equation to these particular cases, I need to work thought the development of the mathematical apparatus.
The maths
Many Orbiter fans will be familiar with the ideal rocket equation expressed in the form:
[MATH] \Delta V = v_e\,\log\frac{m_i}{m_f} [/MATH]
where [MATH]\Delta V[/MATH] is the change in velocity of the spacecraft; [MATH]v_e[/MATH] is the effective velocity of the exhaust gases (e.g., for the Delta Glider, 40,000 m/s); [MATH]m_i[/MATH] is the initial mass of the rocket; and, of course, [MATH]m_f[/MATH] is the final mass of the rocket.
Less familiar to most people will be the differential form of this equation which can be written as:
[MATH]m(t)\,\frac{d^2}{dt^2}x(t)=-v_e\,m'(t)[/MATH]
Here, [MATH]x(t)[/MATH] is just the position of the spacecraft as a function of time; [MATH]m(t)[/MATH] is the mass of the spacecraft at time [MATH]t[/MATH], and [MATH]x'(t)[/MATH] is the time rate of change of the mass of the spacecraft. The term on the left-hand side is just the force acting on the spacecraft; and the term on the right-hand side is conventionally called 'the thrust'. So, this equation expresses the not unexpected expression that "the force on the rocket equals the thrust from the rocket engines". With appropriate boundary conditions, this second equation represents exactly the same physical system as the first - albeit one that can be recognised as an 'equation of motion' for the spacecraft.
What one immediately notices, here is that cast in this form there gravitational forces have been neglected. If effective gravitational forces are low (because, for example, one executes a manoeuvre on a ballistic trajectory in deep space, or a low thrust manoeuvre in Low Earth Orbit). And in these cases, as most Orbiter uses will recognise, this assumption works just fine. However there are cases, usually where manoeuvres require long burn durations, where gravitational forces cannot be neglected. So, the question arises, how should one include gravity in this framework?
First, let's start off with the equations of motion for a spacecraft in a (two-dimensional) Keplerian gravitational field - absent any thrust:
[MATH]m\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH][MATH]m\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]
where [MATH]\mu[/MATH] is the gravitational constant ('GM') for the central gravitating body; [MATH]x(t)[/MATH] and [MATH]y(t)[/MATH] are the cartesian coordinates for the spacecraft at time [MATH]t[/MATH] with the gravitating body being located at the origin of the coordinate system. This equation is generally valid for objects with constant mass. But when a rocket fires its engines, it loses masses - so these equations of motion need to be modified to take into account the varying mass of the system. To do this we need an additional term on the right-hand side that takes into account the rocket's thrust:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]
Here, we have assumed that the thrust is entirely along the positive x-axis. This, then, is a more general representation of the ideal rocket equation for a spacecraft moving in a Keplerian gravitational field.
More generally, the equations of motion can be written as:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\cos\phi(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\sin\phi(t)[/MATH]
where [MATH]\phi(t)[/MATH] is the angle that the thrust vector makes with the x-axis. Generally when applying thrusts, the most efficient thing for us to apply thrust is along the prograde or retrograde vectors. In this case, the equations of motion can be written as:
[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{x'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{y'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH]
This, then, is our generalised version of the ideal rocket equation written in cartesian coordinates. Of course, it is a bit of a mess. But we can tidy things up a little by converting from cartesian coordinates to polar coordinates such that [MATH]x(t)=r(t)\cos\theta(t)[/MATH] and [MATH]x(t)=r(t)\sin\theta(t)[/MATH]. If we do that then, after a fair amount of manipulation, we get the following equations:
[MATH]\frac{d^2}{dt^2}r(t) = \left(r(t) \,\theta'(t)^2-\frac{\mu }{r(t)^2}\right)-v_e\frac{\,m'(t)}{m(t)}\frac{r'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH][MATH]\frac{d^2}{dt^2}\theta(t) = -2\frac{r'(t)\, \theta'(t)}{r(t)}-v_e\frac{\,m'(t)}{m(t)}\frac{\theta'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH]
For a particle moving such that [MATH]\theta'(t)[/MATH] is positive (i.e., moving in an anti-clockwise orbit when viewed from above) and with [MATH]v_e>0[/MATH], these equations describe the motion of a spacecraft executing a prograde burn in a Keplerian gravitational field. If we change the sign of [MATH]v_e[/MATH] they describe a spacecraft executing a retrograde burn.
These equations are a generalisation of the usual form of the ideal rocket equation - albeit with the constraint that rockets are fired in either the prograde or retrograde direction. Now to apply these equations to some specific cases.
Case I - launch trajectories from the Moon
Clearly, the above generalised equations of motion are considerably more intimidating than the standard ideal rocket equation
[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
and we certainly need some fairly specialised tools to solve differential equations
subject to appropriate boundary conditions. Needless to say, though, that such tools do exist and can be applied to fairly routinely solve these (rather ugly) equations of motion.
A case in point is the launch of a spacecraft into a prescribed orbit - e.g. a circular orbit. As many will know, for a given spacecraft with specific impulse and fuel flow rate, an efficient way to get into orbit is to specify a 'pitch program' that slowly tilts the spacecraft from a near vertical orientation towards the horizontal such that the thrust vector more or less tracks the spacecraft's prograde vector. This launch profile his is termed a gravity turn. But the question arises, how does one develop the 'best' pitch program that gives the perfect gravity turn without resorting to trial and error?.
Well, this is where the generalised ideal rocket equation (above) can be used to good effect. But because the equations of motion neglect atmospheric drag and lift, the equations as stated are best applied to spacecraft launching from slowly rotating bodies without atmospheres - e.g., the Moon.
So, for this particular example, we will focus on developing the 'pitch program' for launch of, say, a Delta Glider from the surface of the Moon and direct insertion into a circular orbit. To calculate this, we need to know a few things about the Delta Glider:
1. [MATH]v_e[/MATH] - the effective velocity of the engine exhaust. For the Delta Glider in its standard configuration this is 40,000 m/s. For current technology spacecraft, this is grossly unrepresentative of real engine capabilities - but for the purpose of this example, we'll stick with that number if for no other reason than everyone has a Delta Glider installed in their version of Orbiter.
2. [MATH]m'(t)[/MATH] - the rate at which the Delta Glider loses mass - which is equivalent to the negative of the rate at which the Delta Glider burns fuel. Now, although the Delta Glider can burn fuel at 8 kg/s as it turns out, at this maximum fuel burn rate, the perfect gravity turn calculation would have the Delta Glider inserted into a circular orbit with an altitude of around 5.5 km. This is a bit low. To increase the altitude of the circular orbit, one needs a lower fuel burn rate - in fact to enter into a 60 x 60 km circular orbit, one needs a fuel burn rate of around 2 kg/s. In fact, given the assumptions that we are making, the fuel rate controls our final orbital altitude. For a fuel burn rate of 2.000 kg/s, the theory says that we will insert into a circular orbit with orbital altitude of 58.0 km.
3. [MATH]m(0)[/MATH] - this is the initial total mass of the spacecraft at the instant that the pitch program and launch sequence is engaged. For a fully fuelled Delta Glider, its mass is 24,500 kg. But if we launch from Brighton Beach, say, we will need to hover off the ground and into the right attitude at the right elevation for launch. For reasons specific to the launch from Brighton Beach, and because it is 2.5 km below the Moon's mean radius. it is more appropriate to use a value of 24,323 kg which takes into account the fuel needed to hover up the 2.5 km to the Moon's mean altitude of 0.0 km at a vertical hover speed of 15 m/s.
Given these assumptions, we can now solve the ideal rocket equations of motion to calculate the 'pure' gravity turn that corresponds to those equations. Without going through the gory details of solving the problem, here are the results:
1. Time from launch to orbital insertion - 584 seconds.
2. Delta-V needed for launch 1,969 m/s.
3. Final orbit 58.0 x 58.0 km circular orbit.
4. Initial pitch angle of 87 degrees.
(Now a lot of you will be saying: "87 degree initial pitch angle for launching from the Moon in a Delta Glider? Say what!?". The reason why we have such a high initial pitch angle is that we are using just a quarter of the thrust that the Delta Glider can produce. We are using the fuel flow rate as way to control our altitude of our final circular orbit. Under the assumption of a constant fuel flow rate, we need just 2 kg/s to achieve an orbital altitude of 58 km. And with a quarter of its maximum thrust, the Delta Glider pretty much needs to be standing on its tail in order to execute a pure gravity turn manoeuvre to insert into the required circular orbit. Of course, if we start with a much higher initial thrust and then subsequently lower the thrust, we will have a much lower initial pitch angle. But that's not the example we are working with here.)
And here is the profile of altitude with time:

By the time the spacecraft has established a circular orbit, the Delta Glider is 400 km down range from Brighton Beach.
From the solution, we can also calculate the optimal pitch program corresponding to this solution which we can then insert in a configuration file for . The pitch program sets out the pitch angle as a function of either time or altitude. In our case, we choose to calculate pitch as function or altitude. And here in 100 metre increments is the resulting pitch program:
Code:
0.1 84.85
0.2 82.82
0.3 81.28
0.4 79.98
0.5 78.85
0.6 77.83
0.7 76.89
0.8 76.03
0.9 75.22
1.0 74.45
1.1 73.73
1.2 73.04
1.3 72.38
1.4 71.75
1.5 71.14
1.6 70.56
1.7 69.99
1.8 69.44
1.9 68.91
2.0 68.40
2.1 67.89
2.2 67.41
2.3 66.93
2.4 66.47
2.5 66.01
2.6 65.57
2.7 65.13
2.8 64.71
2.9 64.29
3.0 63.89
3.1 63.49
3.2 63.09
3.3 62.71
3.4 62.33
3.5 61.96
3.6 61.59
3.7 61.23
3.8 60.87
3.9 60.53
4.0 60.18
4.1 59.84
4.2 59.51
4.3 59.18
4.4 58.85
4.5 58.53
4.6 58.22
4.7 57.91
4.8 57.60
4.9 57.30
5.0 56.99
5.1 56.70
5.2 56.41
5.3 56.12
5.4 55.83
5.5 55.55
5.6 55.27
5.7 54.99
5.8 54.72
5.9 54.45
6.0 54.18
6.1 53.91
6.2 53.65
6.3 53.39
6.4 53.13
6.5 52.88
6.6 52.63
6.7 52.38
6.8 52.13
6.9 51.88
7.0 51.64
7.1 51.40
7.2 51.16
7.3 50.92
7.4 50.69
7.5 50.46
7.6 50.23
7.7 50.00
7.8 49.77
7.9 49.55
8.0 49.33
8.1 49.11
8.2 48.89
8.3 48.67
8.4 48.45
8.5 48.24
8.6 48.03
8.7 47.82
8.8 47.61
8.9 47.40
9.0 47.19
9.1 46.99
9.2 46.79
9.3 46.58
9.4 46.38
9.5 46.19
9.6 45.99
9.7 45.79
9.8 45.60
9.9 45.40
10.0 45.21
10.1 45.02
10.2 44.83
10.3 44.64
10.4 44.46
10.5 44.27
10.6 44.09
10.7 43.90
10.8 43.72
10.9 43.54
11.0 43.36
11.1 43.18
11.2 43.01
11.3 42.83
11.4 42.65
11.5 42.48
11.6 42.31
11.7 42.13
11.8 41.96
11.9 41.79
12.0 41.62
12.1 41.45
12.2 41.29
12.3 41.12
12.4 40.96
12.5 40.79
12.6 40.63
12.7 40.46
12.8 40.30
12.9 40.14
13.0 39.98
13.1 39.82
13.2 39.66
13.3 39.51
13.4 39.35
13.5 39.2
13.6 39.04
13.7 38.89
13.8 38.73
13.9 38.58
14.0 38.43
14.1 38.28
14.2 38.13
14.3 37.98
14.4 37.83
14.5 37.68
14.6 37.53
14.7 37.39
14.8 37.24
14.9 37.10
15.0 36.95
15.1 36.81
15.2 36.66
15.3 36.52
15.4 36.38
15.5 36.24
15.6 36.10
15.7 35.96
15.8 35.82
15.9 35.68
16.0 35.54
16.1 35.41
16.2 35.27
16.3 35.13
16.4 35.00
16.5 34.86
16.6 34.73
16.7 34.60
16.8 34.46
16.9 34.33
17.0 34.20
17.1 34.07
17.2 33.94
17.3 33.81
17.4 33.68
17.5 33.55
17.6 33.42
17.7 33.29
17.8 33.16
17.9 33.04
18.0 32.91
18.1 32.78
18.2 32.66
18.3 32.53
18.4 32.41
18.5 32.29
18.6 32.16
18.7 32.04
18.8 31.92
18.9 31.79
19.0 31.67
19.1 31.55
19.2 31.43
19.3 31.31
19.4 31.19
19.5 31.07
19.6 30.95
19.7 30.84
19.8 30.72
19.9 30.60
20.0 30.48
20.1 30.37
20.2 30.25
20.3 30.14
20.4 30.02
20.5 29.91
20.6 29.79
20.7 29.68
20.8 29.56
20.9 29.45
21.0 29.34
21.1 29.23
21.2 29.11
21.3 29.00
21.4 28.89
21.5 28.78
21.6 28.67
21.7 28.56
21.8 28.45
21.9 28.34
22.0 28.23
22.1 28.12
22.2 28.02
22.3 27.91
22.4 27.80
22.5 27.69
22.6 27.59
22.7 27.48
22.8 27.37
22.9 27.27
23.0 27.16
23.1 27.06
23.2 26.95
23.3 26.85
23.4 26.75
23.5 26.64
23.6 26.54
23.7 26.44
23.8 26.33
23.9 26.23
24.0 26.13
24.1 26.03
24.2 25.93
24.3 25.83
24.4 25.73
24.5 25.62
24.6 25.52
24.7 25.43
24.8 25.33
24.9 25.23
25.0 25.13
25.1 25.03
25.2 24.93
25.3 24.83
25.4 24.74
25.5 24.64
25.6 24.54
25.7 24.44
25.8 24.35
25.9 24.25
26.0 24.16
26.1 24.06
26.2 23.96
26.3 23.87
26.4 23.77
26.5 23.68
26.6 23.59
26.7 23.49
26.8 23.40
26.9 23.30
27.0 23.21
27.1 23.12
27.2 23.03
27.3 22.93
27.4 22.84
27.5 22.75
27.6 22.66
27.7 22.57
27.8 22.47
27.9 22.38
28.0 22.29
28.1 22.20
28.2 22.11
28.3 22.02
28.4 21.93
28.5 21.84
28.6 21.75
28.7 21.67
28.8 21.58
28.9 21.49
29.0 21.40
29.1 21.31
29.2 21.22
29.3 21.14
29.4 21.05
29.5 20.96
29.6 20.87
29.7 20.79
29.8 20.70
29.9 20.61
30.0 20.53
30.1 20.44
30.2 20.36
30.3 20.27
30.4 20.19
30.5 20.10
30.6 20.02
30.7 19.93
30.8 19.85
30.9 19.76
31.0 19.68
31.1 19.59
31.2 19.51
31.3 19.43
31.4 19.34
31.5 19.26
31.6 19.18
31.7 19.10
31.8 19.01
31.9 18.93
32.0 18.85
32.1 18.77
32.2 18.69
32.3 18.60
32.4 18.52
32.5 18.44
32.6 18.36
32.7 18.28
32.8 18.20
32.9 18.12
33.0 18.04
33.1 17.96
33.2 17.88
33.3 17.80
33.4 17.72
33.5 17.64
33.6 17.56
33.7 17.48
33.8 17.40
33.9 17.32
34.0 17.24
34.1 17.17
34.2 17.09
34.3 17.01
34.4 16.93
34.5 16.85
34.6 16.78
34.7 16.70
34.8 16.62
34.9 16.54
35.0 16.47
35.1 16.39
35.2 16.31
35.3 16.24
35.4 16.16
35.5 16.09
35.6 16.01
35.7 15.93
35.8 15.86
35.9 15.78
36.0 15.71
36.1 15.63
36.2 15.56
36.3 15.48
36.4 15.41
36.5 15.33
36.6 15.26
36.7 15.18
36.8 15.11
36.9 15.03
37.0 14.96
37.1 14.89
37.2 14.81
37.3 14.74
37.4 14.67
37.5 14.59
37.6 14.52
37.7 14.45
37.8 14.37
37.9 14.30
38.0 14.23
38.1 14.15
38.2 14.08
38.3 14.01
38.4 13.94
38.5 13.86
38.6 13.79
38.7 13.72
38.8 13.65
38.9 13.58
39.0 13.51
39.1 13.43
39.2 13.36
39.3 13.29
39.4 13.22
39.5 13.15
39.6 13.08
39.7 13.01
39.8 12.94
39.9 12.87
40.0 12.80
40.1 12.73
40.2 12.66
40.3 12.59
40.4 12.52
40.5 12.45
40.6 12.38
40.7 12.31
40.8 12.24
40.9 12.17
41.0 12.10
41.1 12.03
41.2 11.96
41.3 11.89
41.4 11.82
41.5 11.75
41.6 11.68
41.7 11.62
41.8 11.55
41.9 11.48
42.0 11.41
42.1 11.34
42.2 11.27
42.3 11.21
42.4 11.14
42.5 11.07
42.6 11.00
42.7 10.93
42.8 10.87
42.9 10.80
43.0 10.73
43.1 10.66
43.2 10.60
43.3 10.53
43.4 10.46
43.5 10.39
43.6 10.33
43.7 10.26
43.8 10.19
43.9 10.13
44.0 10.06
44.1 9.99
44.2 9.93
44.3 9.86
44.4 9.79
44.5 9.73
44.6 9.66
44.7 9.59
44.8 9.53
44.9 9.46
45.0 9.40
45.1 9.33
45.2 9.26
45.3 9.20
45.4 9.13
45.5 9.07
45.6 9.00
45.7 8.93
45.8 8.87
45.9 8.80
46.0 8.74
46.1 8.67
46.2 8.61
46.3 8.54
46.4 8.47
46.5 8.41
46.6 8.34
46.7 8.28
46.8 8.21
46.9 8.15
47.0 8.08
47.1 8.02
47.2 7.95
47.3 7.89
47.4 7.82
47.5 7.76
47.6 7.69
47.7 7.63
47.8 7.56
47.9 7.50
48.0 7.43
48.1 7.37
48.2 7.30
48.3 7.24
48.4 7.17
48.5 7.11
48.6 7.04
48.7 6.98
48.8 6.91
48.9 6.85
49.0 6.78
49.1 6.72
49.2 6.66
49.3 6.59
49.4 6.53
49.5 6.46
49.6 6.40
49.7 6.33
49.8 6.27
49.9 6.20
50.0 6.14
50.1 6.07
50.2 6.01
50.3 5.94
50.4 5.88
50.5 5.81
50.6 5.75
50.7 5.68
50.8 5.62
50.9 5.55
51.0 5.49
51.1 5.42
51.2 5.36
51.3 5.29
51.4 5.23
51.5 5.16
51.6 5.09
51.7 5.03
51.8 4.96
51.9 4.90
52.0 4.83
52.1 4.77
52.2 4.70
52.3 4.63
52.4 4.57
52.5 4.50
52.6 4.43
52.7 4.37
52.8 4.30
52.9 4.23
53.0 4.17
53.1 4.10
53.2 4.03
53.3 3.97
53.4 3.90
53.5 3.83
53.6 3.76
53.7 3.69
53.8 3.63
53.9 3.56
54.0 3.49
54.1 3.42
54.2 3.35
54.3 3.28
54.4 3.21
54.5 3.14
54.6 3.07
54.7 3.00
54.8 2.93
54.9 2.86
55.0 2.79
55.1 2.71
55.2 2.64
55.3 2.57
55.4 2.50
55.5 2.42
55.6 2.35
55.7 2.27
55.8 2.20
55.9 2.12
56.0 2.04
56.1 1.96
56.2 1.89
56.3 1.81
56.4 1.72
56.5 1.64
56.6 1.56
56.7 1.48
56.8 1.39
56.9 1.30
57.0 1.21
57.1 1.12
57.2 1.03
57.3 0.93
57.4 0.83
57.5 0.72
57.6 0.61
57.7 0.49
57.8 0.35
57.9 0.19
58.0 0.00
The numbers in the first column denote the altitude of the spacecraft (in km) above the Moon's mean radius of 1738 km; and the numbers in the second column indicate the pitch angle (in degrees) of the spacecraft at that altitude. Following this pitch program will insert the Delta Glider directly into a 58.0 x 58.0 km circular orbit.
Of course, slight errors will creep in to the trajectory in the absence of some form of automated guidance control. In practice, it makes sense to take over manual control for the last 60 seconds so of the launch. Doing so allows one to execute a near perfect gravity turn insertion into a circular orbit. Although one takes over manual control for the last minute or so of the manoeuvre, the pitch program does most of the hard work and sets the stage for finalising orbit insertion.
Following this pitch program manually is nigh on impossible. So, it needs to be set up as an automated process within, say, LaunchMFD. To do this, one has to add or augment a configuration file (DeltaGlider.cfg) for the Delta Glider in the \config\MFD\LaunchMFD folder as in:
Code:
; Put your variables in this file to make them permanent.
; You might want to copy here some vars collected from the previous sim session from the file:
; Config\MFD\LaunchMFD\ShuttleA_variables.cfg
OLD_ATMO_MODEL = TRUE
SPACE_XY = 2.5 16.0 0
SPACE_BANK = 1.0 12.0 0
ATMO_XY = 2.0 2.5 0
ATMO_BANK = 3.0 6.0 0
ATMO_CONTINUOUS_CONTROL_SWITCH_ANGLE = 10.0
ATMO_BANK_TARGET_WINGS_LEVEL_SWITCH_ANGLE = 20.0
PITCH_PROGRAM_ALTITUDE
Moon
0.1 84.85
0.2 82.82
0.3 81.28
0.4 79.98
0.5 78.85
0.6 77.83
0.7 76.89
0.8 76.03
0.9 75.22
1.0 74.45
1.1 73.73
1.2 73.04
1.3 72.38
1.4 71.75
1.5 71.14
1.6 70.56
1.7 69.99
1.8 69.44
1.9 68.91
2.0 68.40
2.1 67.89
2.2 67.41
2.3 66.93
2.4 66.47
2.5 66.01
2.6 65.57
2.7 65.13
2.8 64.71
2.9 64.29
3.0 63.89
3.1 63.49
3.2 63.09
3.3 62.71
3.4 62.33
3.5 61.96
3.6 61.59
3.7 61.23
3.8 60.87
3.9 60.53
4.0 60.18
4.1 59.84
4.2 59.51
4.3 59.18
4.4 58.85
4.5 58.53
4.6 58.22
4.7 57.91
4.8 57.60
4.9 57.30
5.0 56.99
5.1 56.70
5.2 56.41
5.3 56.12
5.4 55.83
5.5 55.55
5.6 55.27
5.7 54.99
5.8 54.72
5.9 54.45
6.0 54.18
6.1 53.91
6.2 53.65
6.3 53.39
6.4 53.13
6.5 52.88
6.6 52.63
6.7 52.38
6.8 52.13
6.9 51.88
7.0 51.64
7.1 51.40
7.2 51.16
7.3 50.92
7.4 50.69
7.5 50.46
7.6 50.23
7.7 50.00
7.8 49.77
7.9 49.55
8.0 49.33
8.1 49.11
8.2 48.89
8.3 48.67
8.4 48.45
8.5 48.24
8.6 48.03
8.7 47.82
8.8 47.61
8.9 47.40
9.0 47.19
9.1 46.99
9.2 46.79
9.3 46.58
9.4 46.38
9.5 46.19
9.6 45.99
9.7 45.79
9.8 45.60
9.9 45.40
10.0 45.21
10.1 45.02
10.2 44.83
10.3 44.64
10.4 44.46
10.5 44.27
10.6 44.09
10.7 43.90
10.8 43.72
10.9 43.54
11.0 43.36
11.1 43.18
11.2 43.01
11.3 42.83
11.4 42.65
11.5 42.48
11.6 42.31
11.7 42.13
11.8 41.96
11.9 41.79
12.0 41.62
12.1 41.45
12.2 41.29
12.3 41.12
12.4 40.96
12.5 40.79
12.6 40.63
12.7 40.46
12.8 40.30
12.9 40.14
13.0 39.98
13.1 39.82
13.2 39.66
13.3 39.51
13.4 39.35
13.5 39.2
13.6 39.04
13.7 38.89
13.8 38.73
13.9 38.58
14.0 38.43
14.1 38.28
14.2 38.13
14.3 37.98
14.4 37.83
14.5 37.68
14.6 37.53
14.7 37.39
14.8 37.24
14.9 37.10
15.0 36.95
15.1 36.81
15.2 36.66
15.3 36.52
15.4 36.38
15.5 36.24
15.6 36.10
15.7 35.96
15.8 35.82
15.9 35.68
16.0 35.54
16.1 35.41
16.2 35.27
16.3 35.13
16.4 35.00
16.5 34.86
16.6 34.73
16.7 34.60
16.8 34.46
16.9 34.33
17.0 34.20
17.1 34.07
17.2 33.94
17.3 33.81
17.4 33.68
17.5 33.55
17.6 33.42
17.7 33.29
17.8 33.16
17.9 33.04
18.0 32.91
18.1 32.78
18.2 32.66
18.3 32.53
18.4 32.41
18.5 32.29
18.6 32.16
18.7 32.04
18.8 31.92
18.9 31.79
19.0 31.67
19.1 31.55
19.2 31.43
19.3 31.31
19.4 31.19
19.5 31.07
19.6 30.95
19.7 30.84
19.8 30.72
19.9 30.60
20.0 30.48
20.1 30.37
20.2 30.25
20.3 30.14
20.4 30.02
20.5 29.91
20.6 29.79
20.7 29.68
20.8 29.56
20.9 29.45
21.0 29.34
21.1 29.23
21.2 29.11
21.3 29.00
21.4 28.89
21.5 28.78
21.6 28.67
21.7 28.56
21.8 28.45
21.9 28.34
22.0 28.23
22.1 28.12
22.2 28.02
22.3 27.91
22.4 27.80
22.5 27.69
22.6 27.59
22.7 27.48
22.8 27.37
22.9 27.27
23.0 27.16
23.1 27.06
23.2 26.95
23.3 26.85
23.4 26.75
23.5 26.64
23.6 26.54
23.7 26.44
23.8 26.33
23.9 26.23
24.0 26.13
24.1 26.03
24.2 25.93
24.3 25.83
24.4 25.73
24.5 25.62
24.6 25.52
24.7 25.43
24.8 25.33
24.9 25.23
25.0 25.13
25.1 25.03
25.2 24.93
25.3 24.83
25.4 24.74
25.5 24.64
25.6 24.54
25.7 24.44
25.8 24.35
25.9 24.25
26.0 24.16
26.1 24.06
26.2 23.96
26.3 23.87
26.4 23.77
26.5 23.68
26.6 23.59
26.7 23.49
26.8 23.40
26.9 23.30
27.0 23.21
27.1 23.12
27.2 23.03
27.3 22.93
27.4 22.84
27.5 22.75
27.6 22.66
27.7 22.57
27.8 22.47
27.9 22.38
28.0 22.29
28.1 22.20
28.2 22.11
28.3 22.02
28.4 21.93
28.5 21.84
28.6 21.75
28.7 21.67
28.8 21.58
28.9 21.49
29.0 21.40
29.1 21.31
29.2 21.22
29.3 21.14
29.4 21.05
29.5 20.96
29.6 20.87
29.7 20.79
29.8 20.70
29.9 20.61
30.0 20.53
30.1 20.44
30.2 20.36
30.3 20.27
30.4 20.19
30.5 20.10
30.6 20.02
30.7 19.93
30.8 19.85
30.9 19.76
31.0 19.68
31.1 19.59
31.2 19.51
31.3 19.43
31.4 19.34
31.5 19.26
31.6 19.18
31.7 19.10
31.8 19.01
31.9 18.93
32.0 18.85
32.1 18.77
32.2 18.69
32.3 18.60
32.4 18.52
32.5 18.44
32.6 18.36
32.7 18.28
32.8 18.20
32.9 18.12
33.0 18.04
33.1 17.96
33.2 17.88
33.3 17.80
33.4 17.72
33.5 17.64
33.6 17.56
33.7 17.48
33.8 17.40
33.9 17.32
34.0 17.24
34.1 17.17
34.2 17.09
34.3 17.01
34.4 16.93
34.5 16.85
34.6 16.78
34.7 16.70
34.8 16.62
34.9 16.54
35.0 16.47
35.1 16.39
35.2 16.31
35.3 16.24
35.4 16.16
35.5 16.09
35.6 16.01
35.7 15.93
35.8 15.86
35.9 15.78
36.0 15.71
36.1 15.63
36.2 15.56
36.3 15.48
36.4 15.41
36.5 15.33
36.6 15.26
36.7 15.18
36.8 15.11
36.9 15.03
37.0 14.96
37.1 14.89
37.2 14.81
37.3 14.74
37.4 14.67
37.5 14.59
37.6 14.52
37.7 14.45
37.8 14.37
37.9 14.30
38.0 14.23
38.1 14.15
38.2 14.08
38.3 14.01
38.4 13.94
38.5 13.86
38.6 13.79
38.7 13.72
38.8 13.65
38.9 13.58
39.0 13.51
39.1 13.43
39.2 13.36
39.3 13.29
39.4 13.22
39.5 13.15
39.6 13.08
39.7 13.01
39.8 12.94
39.9 12.87
40.0 12.80
40.1 12.73
40.2 12.66
40.3 12.59
40.4 12.52
40.5 12.45
40.6 12.38
40.7 12.31
40.8 12.24
40.9 12.17
41.0 12.10
41.1 12.03
41.2 11.96
41.3 11.89
41.4 11.82
41.5 11.75
41.6 11.68
41.7 11.62
41.8 11.55
41.9 11.48
42.0 11.41
42.1 11.34
42.2 11.27
42.3 11.21
42.4 11.14
42.5 11.07
42.6 11.00
42.7 10.93
42.8 10.87
42.9 10.80
43.0 10.73
43.1 10.66
43.2 10.60
43.3 10.53
43.4 10.46
43.5 10.39
43.6 10.33
43.7 10.26
43.8 10.19
43.9 10.13
44.0 10.06
44.1 9.99
44.2 9.93
44.3 9.86
44.4 9.79
44.5 9.73
44.6 9.66
44.7 9.59
44.8 9.53
44.9 9.46
45.0 9.40
45.1 9.33
45.2 9.26
45.3 9.20
45.4 9.13
45.5 9.07
45.6 9.00
45.7 8.93
45.8 8.87
45.9 8.80
46.0 8.74
46.1 8.67
46.2 8.61
46.3 8.54
46.4 8.47
46.5 8.41
46.6 8.34
46.7 8.28
46.8 8.21
46.9 8.15
47.0 8.08
47.1 8.02
47.2 7.95
47.3 7.89
47.4 7.82
47.5 7.76
47.6 7.69
47.7 7.63
47.8 7.56
47.9 7.50
48.0 7.43
48.1 7.37
48.2 7.30
48.3 7.24
48.4 7.17
48.5 7.11
48.6 7.04
48.7 6.98
48.8 6.91
48.9 6.85
49.0 6.78
49.1 6.72
49.2 6.66
49.3 6.59
49.4 6.53
49.5 6.46
49.6 6.40
49.7 6.33
49.8 6.27
49.9 6.20
50.0 6.14
50.1 6.07
50.2 6.01
50.3 5.94
50.4 5.88
50.5 5.81
50.6 5.75
50.7 5.68
50.8 5.62
50.9 5.55
51.0 5.49
51.1 5.42
51.2 5.36
51.3 5.29
51.4 5.23
51.5 5.16
51.6 5.09
51.7 5.03
51.8 4.96
51.9 4.90
52.0 4.83
52.1 4.77
52.2 4.70
52.3 4.63
52.4 4.57
52.5 4.50
52.6 4.43
52.7 4.37
52.8 4.30
52.9 4.23
53.0 4.17
53.1 4.10
53.2 4.03
53.3 3.97
53.4 3.90
53.5 3.83
53.6 3.76
53.7 3.69
53.8 3.63
53.9 3.56
54.0 3.49
54.1 3.42
54.2 3.35
54.3 3.28
54.4 3.21
54.5 3.14
54.6 3.07
54.7 3.00
54.8 2.93
54.9 2.86
55.0 2.79
55.1 2.71
55.2 2.64
55.3 2.57
55.4 2.50
55.5 2.42
55.6 2.35
55.7 2.27
55.8 2.20
55.9 2.12
56.0 2.04
56.1 1.96
56.2 1.89
56.3 1.81
56.4 1.72
56.5 1.64
56.6 1.56
56.7 1.48
56.8 1.39
56.9 1.30
57.0 1.21
57.1 1.12
57.2 1.03
57.3 0.93
57.4 0.83
57.5 0.72
57.6 0.61
57.7 0.49
57.8 0.35
57.9 0.19
58.0 0.00
END_PITCH_PROGRAM_ALTITUDE
All that remains now, is to set this scenario up in Orbiter and run the pitch program to see if the maths (and the calculated pitch program) actually works in practice. When I find a little more time, I'll assemble a short video demonstrating the effectiveness of the calculations.
I also have one more example tot work through - insertion into Low Earth Orbit when approaching Earth at a high hyperbolic approach velocity. But that too will have to wait until I have a little more time.
Last edited: