# Transforming coordinate system into a rotating one

I want to solve a following problem.

Imagine a collection of massive points. Each point has mass, position, velocity, moment of inertia, orientation and spin. We can calculate its total center of mass, total momentum and total angular momentum.
The task is to transform the coordinate system so that all 3 of these parameters is zero.

For the center of mass and total momentum it is easy. The problem is with the angular momentum. I need to transform a non-rotating coordinate system into a rotating one. I know the formula for such transformation, however I don't know how to find the neccessary angular velocity vector.

The particles may undergo linear and angular accelerations, however we can assume that the total momentum and total angular momentum is conserved.

The equation I got involves a double cross product and a derivative of the total moment of inertia. I bet someone already solved it, so if you know any papers or hints, please let me know. The numerical sollution will suffice.

fresh_42
Mentor
2021 Award
We can calculate its ... total angular momentum ... I know the formula for such transformation, however I don't know how to find the necessary angular velocity vector.
This seems to be a contradiction. In the end it is still vector addition.

Wow, thank you for digging out my post from 2013.

This is not vector addition. In fact, the problem is very complicated.

We have a collection of massive points, moving relative to one another. Each point has mass (##M_{i}##) and moment of inertia tensor (##\overline{\overline{I_{i}}}##) which are constant. They also have variable coordinates: position (##\tilde X_{i}##), orthogonal orientation matrix (##\overline{\overline{Q_{i}}}##), linear velocity vector (##\vec V_{i}##) and rotational velocity pseudovector (##\vec R_{i}##).

The coordinates are given in some default coordinate system. We can transform this system to another one by introducing shifts (non-constant, i.e. they can depend on time thus changing velocities) and rotations.
Rotation is a change of orientation, i.e. it is a matrix by which individual point orientations are multiplied. The immediate change of orientation (derivative of a matrix) is a spin matrix. It is an anti-symmetric matrix and its components in 3 dimensions may be rearranged into a pseudovector.

Task 1: Find a coordinate system where the center of mass is in the origin of the coordinate system. Easy.
Task 2: Find a coordinate system where the total momentum is zero. Easy.
Task 3: Find a coordinate system where the total angular momentum is zero. Well?

We have 2 definitions of angular momentum.

1. Angular momentum as the sum of angular momenta of the points. (All coordinates here in a system where the center of mass is at the origin and total momentum is zero.)

$$\vec L_{total} = \sum_{i} \vec L_{i} + \sum_{i} (\vec V_{i} \times \tilde X_{i}) M_{i} = \sum_{i} \overline{\overline{Q}}_{i} \cdot \overline{\overline{I}}_{i} \cdot \vec R_{i} + \sum_{i} (\vec V_{i} \times \tilde X_{i}) M_{i}$$

2. Angular momentum as total moment of inertia times the formal rotational velocity.

$$\vec L_{total} = \overline{\overline{I}}_{total} \cdot \vec R_{total} = (\sum_{i} \overline{\overline{Q}}_{i} \cdot \overline{\overline{I}}_{i} \cdot \overline{\overline{Q^{-1}}}_{i} + \sum_{i} ((\tilde X_{i} \cdot \tilde X_{i}) \overline{\overline{1}} - \tilde X_{i} \otimes \tilde X_{i}) M_{i}) \cdot \vec R_{total}$$

Now the thing is that the formal rotational velocity ##R_{total}## must be defined relative to some property of the system of points, which was missing from my original idea. I decided to use principal axes of inertia. The "default" orientation of the system is the one where principal axes of inertia align with the base vectors.

The rotational velocity is a derivative of the orientation matrix. Total moment of inertia doesn't need to be constant. I managed to find the right orientation matrix using singular value decomposition but I wasn't able to solve the derivative equation and compare the formal rotational velocity to zero.

For curious: this was a part of a physical simulation library I was working on.

kimbyd
Gold Member
I don't think it's actually possible unless you allow the possibility that the rotational velocity of the coordinate system can be a function of the moment of inertia as the moment of inertia changes in time.

To take a simple case done in a typical high school physics class: a person stands on a rotating tray (aka turntable or Lazy Susan), and is holding two heavy books close to their chest. The person is spun at some speed, and then extend their arms. Their rotation immediately slows. Then it speeds up again when they bring the books back to their chest.

There is no single rotational velocity which could ever show ##\vec{L} = 0## for that entire process. Furthermore, in more complicated cases the direction of the rotational velocity can also change over time.

Now, with that said, there might be some value in finding a coordinate system where ##\langle \vec{L}\rangle = 0## for a periodic system. That should be relatively straightforward as long as you can compute the time-averaged moment of inertia. What was the purpose in computing this anyway?

I don't think it's actually possible unless you allow the possibility that the rotational velocity of the coordinate system can be a function of the moment of inertia as the moment of inertia changes in time.

Uhm, well, you can, when you do it in a coordinate system that is moving to compensate changes in the moment of inertia tensor. That is the point of this whole task. To make the coordinate system to move in such a way that cancels angular momentum.

What was the purpose in computing this anyway?
This was a part of a physical simulation library.

This transformation, if possible, would allow to partition the system into a tree of sub-systems and each could be simulated on a separate CPU.

kimbyd
Gold Member
Uhm, well, you can, when you do it in a coordinate system that is moving to compensate changes in the moment of inertia tensor. That is the point of this whole task. To make the coordinate system to move in such a way that cancels angular momentum.
That introduces additional challenges, however. You're not only using a rotating coordinate system, but one with highly non-trivial acceleration. So you have to compensate not just for the acceleration due to the rotation of the coordinate system, but also for the accelerations caused by the change in rotation over time.

This was a part of a physical simulation library.

This transformation, if possible, would allow to partition the system into a tree of sub-systems and each could be simulated on a separate CPU.
I suppose if it increases parallelism it could make it worth the extra effort. You'll probably have to do many more calculations, but more parallelism easily compensates for that with modern computing systems.

Do you know if this is something that has been done before? It strikes me as a very difficult thing to get right. If you can find a paper which has demonstrated this algorithm, that would be ideal. I could probably help parse it if you have difficulty.

That absent, I'd try to start with a simple two-particle system with an elliptic orbit (as that won't have a constant moment of inertia), and try to come up with a generalized numerical solution using the classical elliptical coordinate solution as a guide.

That introduces additional challenges, however. You're not only using a rotating coordinate system, but one with highly non-trivial acceleration. So you have to compensate not just for the acceleration due to the rotation of the coordinate system, but also for the accelerations caused by the change in rotation over time.

Yes. I managed to write down all inertial forces in such an accelerating frame and I managed to numerically determine the orientation matrix at one instant of time, from singular value decomposition.

I wasn't able to solve it analytically and I didn't find the derivative I needed. So in the end I abandoned it.

Actually, the analytical solution wasn't even needed. I would be happy with the following approach: find the orientation matrix numerically (done), find the angular velocity numerically (derivative of the orientation matrix, not done), integrate it for a while and run another thread in parallel that looks for updated orientation and angular velocity. When the new values arrive, integrate them and so on.

A certain simplification can be made, when we see that non-rigid bodies can be defined orientation and angular velocity arbitrarily. Imagine a planetary system with one central star and 2 planets orbiting the star in the ecliptic plane but in opposite directions. Is this system rotating as a whole? We can clearly define north and south, but what about east and west? We may define lack of rotation as lack of inertial forces, but we still have some degree of freedom selecting the definition of orientation. By choosing the definition of orientation right, we could save ourselves some computations. In my library the only thing that was needed was that the definition of orientation had to agree with the case of rigid bodies. Taking principal axes of inertia gave the right results, despite being very hard to calculate, but there may be other definitions of orientation that are easier.

Do you know if this is something that has been done before?
I don't know. I was searching, but I didn't find much. Still I don't believe I was the first to try that.

When doing that I managed to accidentally re-invent dipole approximation method, derive Navier-Stokes equations and even some results from computer graphics :).

kimbyd