Getting local angular velocity of a part

I am on a journey of trying to make semi realistic neutonian space phyiscs, one of the things I decided on making is turning ships with vector forces offset from center of mass, rather than using allign orientation.

For both strafing and turning (to stop ship from sliding around), I needed a reliable way to measure ship’s local velocity and local angular velocity, relative to it’s look vector and roll.
Regular local velocity was pretty easy, I just used:

local LocalShipVeclocity = VehicleSeat.CFrame:VectorToObjectSpace(VehicleSeat.Velocity)

I’ve tried the same for angular velocity:

print(VehicleSeat.CFrame:VectorToObjectSpace(VehicleSeat.AssemblyAngularVelocity))

But getting angular velocity local to ship seems to be more complex. What I am trying to get is a vector 3 like this:


ImageExample2
That’s what I am trying to get, but instead, angular velocity of an assembly is measured relative to the word, rather than it’s own roll, pitch and yaw.

Essentially I am trying to get turning rates in every direction to counter them with forces.
pitch yaw roll

1 Like