I went even further with creating ascent trajectory for the XS Venture (or any other similar transport), and I wrote out several equations that should define the perfect trajectory.
First, here’s raw picture of my whiteboard (it contains mistakes though, look below):

Now describing the equations and how I got them. First of all, what should be solution of our equation? We need to somehow define trajectory itself.
Let’s define x(t) as function that shows distance from launch site at given time, y(t) as function that shows at what altitude we are at at specific moment of time. Therefore we have a parametric trajectory!
A spacecrafts autopilot can command target angle of attack/target vertical speed, but parametric trajectory like that doesn’t suit us, so later we can use our solution to find function y(x), that is how altitude depends on distance from launch site.
And there’s more, we can find alpha(y) (angle of attack) as function from current altitude (which makes us get rid of distance from launch site, and allows us to resume trajectory from any spot, without relation to launch site).
For simplification these equations do not account for curvature of Earth yet.
The following forces act on our spacecraft in our model: aerodynamic force (drag and lift for our 2D case), gravity (obvious), and our engines also produce engine thrust. Our spacecraft will remain constantly flying if all these forces are equal (engine and our current velocity completly compensate gravity).
Aerodynamic force is how much pressure against our surface air creates. We are flying high mach number, therefore we can ignore airfoil lift, and simplify our model big time.
Our vehicle has front area, and wing area (lifting area). It also has side area, but we can simplify our task by only looking at 2-dimensional case, therefore let’s ignore it.
Our aircraft is flying with certain angle of attack (alpha) – that is, angle between airstream and vehicle nose. We can ignore winds, because our vehicle is moving at over 3000 knots, while wind speeds are under 200 knots.
Now, pressure acting on one unit of area is called dynamic pressure, it depends on current airstream velocity. This doesn’t account for effects of compression, etc.
The equation for dynamic pressure is Q = (1/2)*(V^2)*P where V is airstream velocity and P is air pressure.
Our velocity is a vector, consists of velocity on X axis and Y axis, that is derivatives of our functions x(t) and y(t). The final aerodynamic force is area_facing_airstream * dynamic_pressure * velocity.
Our engines are defined by specific function tau – it shows how much thrust we need to apply to keep certain speed, and it limits our speed in this way (the resulting trajectory will have “perfect” speed in each spot).
Here’s corrected set of equations minus initial parameters:
The result of solving first set will be functions x(t); y(t). These functions will be general solution and depend on several constants. Second set of equations will create some kind of connection between all of these constants, leaving out only one or two.
Then we can solve this for known start/end constrains, and find values of the constants, receiving our x(t), y(t) functions as we want them.
Now by just commanding specific alpha to flight control and tau to engines we will stay on this profile.
The best profile would be when tau never exceeds 70% max engine thrust, that would be safe enough. This equation might return such tau function that it exceeds max engine thrust, that would happen if you set target position and velocity too high or too fast.
Just an example for you, here’s one of possible solutions, but it isn’t real solution, does not fit the equations:

x(t)
















