# Applying forces to a body, outside it's center of mass.

1. Jul 2, 2012

### Xcrypt

Hello.
I'm currently coding on a physics engine.

To do so, I looked up some code from open-source engines.

I noted that there is a function where you can apply a force to a rigid body, outside it's center of mass.

It goes something like this:

ApplyForceAPosition(vector force, vector positionWorld);

Where the resultant torque would be
distance(positionWorld,m_centerofmass)*force*sin(theta),
as expected.

However, applying the force outside the center of mass can also cause a linear force.
it would be calculated as follows:
m_Force = force;

But this seems strange to me. If I put balance pen on one finger, and I apply a force to it, so that it would spin, I can do so without visually noticing any change in linear velocity.

So it seems to me that a more appropriate formula to compute the resulting linear force from a force applied outside the center of mass would be:

m_force = |cos(theta)|*force;
Where theta would be the angle between the force vector and [forcepos-COM].

I can't seem to find any articles on this, and I'm most likely wrong, but then how come I can spin a pen on one finger without causing any change in linear velocity?

2. Jul 2, 2012

### D H

Staff Emeritus
The physics engines are correct. The acceleration of the center of mass of an object is the the vector sum of all of the external forces acting on the object (regardless of point of application) divided by the object's mass. Those external forces also arise in torques, and here the torques obviously do depend on the point of application.

3. Jul 2, 2012

### Xcrypt

Well my question was not really whether I was correct or not. I even stated that I'm most likely wrong. The question is why. Please read my question.

I can spin a pen on one finger (by pushing it with one finger only), without changing any visually noticeable change in linear velocity. However, if I were to change the position of application of the force, it doesn't spin so much, and does have change in linear velocity. Please explain.

4. Jul 2, 2012

### D H

Staff Emeritus
You cannot create pure rotation unless the forces cancel, resulting in zero net force, but the torques do not cancel. It's called a couple.

Spacecraft designers have to deal with the fact that forces result in translation and rotation *all the time*. It would be really nice if jets designed for translational motion always resulted in pure translation, if the jets designed for rotational motion (when operated in pairs) always resulted in a pure couple. This never happens. Instead there is always some undesired cross coupling between translation and rotation.

Those spacecraft designers have to accommodate for this undesired cross coupling in their control systems. If we had the physics wrong, those guidance and control systems would not get the vehicles where they are supposed to go. Those guidance and control systems *do* get the vehicles where they are supposed to go.

NASA simulates every vehicle that is intended to dock with the Space Station to make sure the vehicle will be safe. It uses something very similar to the physics engines calculations you described in the opening post. If we had the physics wrong, those simulations would yield something different from the true behavior of these vehicles. Those simulations are instead spot on. The vehicles behave pretty much as predicted.

5. Jul 2, 2012

### Xcrypt

Don't worry, I'm not saying physicists are wrong :)
But I still need clarification for the situation with the pen on my finger! In the case where I apply a force with one finger only, where is the other force coming from that would create a zero net linear force?