"I understand I will need a pivot which holds the current momentum, and the spaceship should move in the direction of the pivot regardless of facing."
Depending on how realistic you want to get, you'll need to track both momentum and angular momentum.
"According to how fast/heavy etc the ship is moving, the pivot should gradually align itself with the ships' true facing."
Again, if you're going for realism, there's absolutely no correlation between the direction you're heading and your velocity vectory. Under continuous acceleration in a fixed direction your velocity vector will slowly approach but never match your heading vector. Since hardly anyone will ever do this it's pretty irrelevant.
"This is where I think I need AlignToVector - or some complicated trig routines or something..."
Not really. Your acceleration can be represented by a pretty simple vector (0,0,a) where a is how big your acceleration is. Put a pivot there and then apply your heading to it; convert its position into global coordinates and add that to your accumulated velocity v = (vx, vy, vz). Your velocity is simply applied to your position in global coordinates rather than local.
Note that Newtonian movement in Space is not for the faint-of-heart. Having implemented all this you'll probably find getting anywhere to be next to impossible.
And if you take angular momentum into account you'll go completely nuts trying to do anything.
It sounds like what you're really trying to do is put "lag" into the controls. If that's the case, I'd suggest keeping a bunch of pivots handy and setting them to your old headings, and then using a pivot that's say 0.5 seconds old to determine your velocity vector.
Depending on how realistic you want to get, you'll need to track both momentum and angular momentum.
"According to how fast/heavy etc the ship is moving, the pivot should gradually align itself with the ships' true facing."
Again, if you're going for realism, there's absolutely no correlation between the direction you're heading and your velocity vectory. Under continuous acceleration in a fixed direction your velocity vector will slowly approach but never match your heading vector. Since hardly anyone will ever do this it's pretty irrelevant.
"This is where I think I need AlignToVector - or some complicated trig routines or something..."
Not really. Your acceleration can be represented by a pretty simple vector (0,0,a) where a is how big your acceleration is. Put a pivot there and then apply your heading to it; convert its position into global coordinates and add that to your accumulated velocity v = (vx, vy, vz). Your velocity is simply applied to your position in global coordinates rather than local.
Note that Newtonian movement in Space is not for the faint-of-heart. Having implemented all this you'll probably find getting anywhere to be next to impossible.
And if you take angular momentum into account you'll go completely nuts trying to do anything.
It sounds like what you're really trying to do is put "lag" into the controls. If that's the case, I'd suggest keeping a bunch of pivots handy and setting them to your old headings, and then using a pivot that's say 0.5 seconds old to determine your velocity vector.