Quick force question

Started by
7 comments, last by Numsgil 16 years, 9 months ago
This is really basic, but I'm refactoring the API for my physics engine and I'm questioning how I have previously been applying general forces. From my understanding: torque += cross(r,F); The issue is what force to apply to the object's center of mass. Should i just add the whole force to the force vector like this: force += F; or what I had previously was to find the projection of F on R and apply that vector to the object's center of mass like so: force += F.projectOn(r); (i'm in favor of this one) Which is the correct solution?
Advertisement
Quote:Original post by Aressera
This is really basic, but I'm refactoring the API for my physics engine and I'm questioning how I have previously been applying general forces.

From my understanding:

torque += cross(r,F);

The issue is what force to apply to the object's center of mass. Should i just add the whole force to the force vector like this:

force += F;

or what I had previously was to find the projection of F on R and apply that vector to the object's center of mass like so:

force += F.projectOn(r);
(i'm in favor of this one)


Which is the correct solution?
I'm fairly certain that the answer is simply to add F (force and torque operate independently of each other - in other words, it is not the case that a greater angular effect means a lesser linear effect, or vice versa).
I have trouble believing that though. Do an experiment, set a long object that rotates easily on a slick surface (such as a soda bottle). Do two different cases: push on it's end in line with the body - this should produce little rotation and large translation. The other case is to push perpendicular to the axis, which produces a large rotation but little translation.

The end effect is that the more torque you produce, the less translational force there is, which is the way my projection model works. I just want some verification of this.
Yep, jyk is correct. The force applied to the center of mass of the rigid body is just the sum of all the forces that act on the body, even if they don't act on its center of mass. Aressera, as for your experiment, i think you need some equipment to have accurate and valid results :). You can't be sure how much force you are applying, and if this force is constant, just with your bare hands ;)
Quote:Original post by Aressera
I have trouble believing that though. Do an experiment, set a long object that rotates easily on a slick surface (such as a soda bottle). Do two different cases: push on it's end in line with the body - this should produce little rotation and large translation. The other case is to push perpendicular to the axis, which produces a large rotation but little translation.

The end effect is that the more torque you produce, the less translational force there is, which is the way my projection model works. I just want some verification of this.
This has been discussed quite a bit (for an explanation of this particular phenomenon, read the section at the end of David Baraff's second article on rigid body simulation).

I'm no physics expert, but I think your example is hampered by a number of issues (notably friction). To think about this problem accurately, you need to imagine a rod-like object floating in a vacuum with no other forces (e.g. gravity) present. Under these circumstances, the linear acceleration should be the same whether the force is applied near the middle, or near the end.

I'll wait for the physics guys to confirm or deny this, but I'm pretty sure it's right.

[Edit: see above.]
Thanks

Yeah, I guess it was friction misleading me.
I'm entering the discussion since I'm also in doubt about this. We usually do what jyk said in physics simulations, and that works fine. But, I think there's something wrong with that. I think the problem is related to the energy of the system, not sure . . . K = 0.5*(m*v² + I*w²).

Hmm...think about this: if you constantly apply a force on a rigid body in a way that it dont generate any torque, in some time dt the kinetic energy of the rigid body will be 0.5*m*v², right? But if you apply this same force on this same rigid body but this time generating torque the kinetic energy of the rigid body after some time dt will be 0.5*(m*v² + I*w²).If we consider that the force on the center of mass is the same we're applying on the rigid body at a point p on its surface, we'll be 'creating' energy(0.5*I*w²), because the 'linear energy'(sorry if this is a nasty term) will be the same and we'll have an additional 'angular energy' since the energy we have given to the system is the same of the first example.

Well, it seems to be true =/, but I'm not all that good in physics and cannot say it is really correct. What do ya think physics freaks?!

Thanks.
.
Lets draw this analogy:

Impulse is the time integral of force, in the same units of momentum, Iw is the angular momentum - the time integral of torque. When an impulse is applied on a body at a radius r, the new velocities are determined like this:

v += J/m
w += cross(r,J)/I

look familiar?

J is the impulse vector, very similar to an applied force. As you can see, if we differentiate this equation with respect to time, we get the equations for the application of a force:

a += F/m
aa += cross(r,F)/I

which turns into the following when we multiply both sides by the mass constants:

force += F
torque += cross(r,F)


Hopefully this will assuade any skeptics.
@xissburg - It is not true that two forces of equal magnitude need to necessarily produce the same change in energy. Remember that change in energy is Work, meaning Force * distance-- or in other words, how hard you push times what you accomplish.
[size=2]Darwinbots - [size=2]Artificial life simulation

This topic is closed to new replies.

Advertisement