oh, I see the problem, I don't mean
```precalc_dx[0] += dx```
I mean 
```posx += precalc_dx[0]``
Or at least something like that.  You're shifting the parts relative to the new origin in its default rotation, but you're moving the vehicle itself according to its current rotation.