Weight in physics calcs

Started by
16 comments, last by MGB 19 years, 10 months ago
Hi all, I''m simulating a projectile''s flight in my engine to the level of including air density etc. Just wondered where the object''s weight comes into play? I know it affects the downward force (W=m*G), but how is it accounted for? I''m thinking that just applying it to the gravity term would make a heavier object fall faster than a light one, which I think is wrong..?
Advertisement
You should just apply it at the center of mass. F = m * g
Every object would accelerate with g (= 9.81 m/s^2) if there were no drag or any other force.
If you drop two objects on earth from the same height, they will fall in the exact same way with the same acceleration and velocity assuming of course that there is no drag. Basically, since F=ma, and a due to gravity is the same at the heights above the earth you will be looking at, gravity exerts equal force on all falling objects. That does not mean equal energy gain, however. In physics, there is something we do called making a free-body diagram, which basically maps out all of the forces acting on an object and which directions the force vectors are in. From that diagram, you can get an idea of how to resolve the force vectors into their x and y components, which is what you need to calculate the total force in the x and y directions. Basically, when you draw a free-body diagram for a projectile, the force due to gravity points straight down from the center of gravity. The drag force will affect both the x and y components; how it affects them depends on how you implement the drag. Drag is tricky.

--Garibaldi
I'm using an origin point mass (not going to the rigid body level here!)
I'm including drag as:

const float speed = mVelocity.Length(); // Assumes no wind.
const float dragForce = 0.5f * KRocketDragCoefficient * KAirDensityRho * (speed*speed); // Ignoring cross-sectional area.
mVelocity -= mVelocity * dragForce;


[edited by - aph3x on May 27, 2004 12:33:15 PM]
Sorry I did not know what projectile means

usng 3D vectors:
sumforce=vector(0,0,0)sumforce+=-abs(dragforce)*unitvelocitydirectionvectorsumforce+=vector(0,0,-mass*9.81)//euler:acceleraionvector = sumforce / masspositionvector += velocityvector * dtvelocityvector += accelerationvector * dt


You must first sum all the force vectors acting on the object, and then calculate acceleration, velocity, and position
quote:Original post by szinkopa
sumforce+=-abs(dragforce)*unitvelocitydirectionvector
sumforce+=vector(0,0,-mass*9.81)


lol - language barriers strike again.

Ah, of course, the velocity direction vector should be normalised, doh!



[edited by - aph3x on May 27, 2004 1:23:49 PM]
Use the weight as just another force acting on the object. (downward). It''s true everything falls at the same speed in a vacuum, but not with air resistance.
So pretty much all you need to do is acceleration = netForce / mass;
so if you had a 10kg object, and 9.8m/s acceleration, the weight is 98N. If its falling straight down at some instant and the drag force is 50N, the netForce will be 48N.
then Accell = 48 / 10kg = 4.8 m/s^2.

Compare that to an object of 20kg. Weight is now 196N. If the drag force is still 50N the netForce will be 119N.
Accel = 119 / 20 = 5.95 m/s^2.

So you see, a heavier object DOES fall faster when air resistance is present, as the force pushing downward will be fractionally larger in comparison to the frictional forces.

You really dont need to know the details, just sum up all your forces, divide by mass, and apply the acceleration. That''s alot of the point of simulators in the end... to help visualize things that may not be intuitive.
quote:Original post by szinkopa
-some nice source-

You must first sum all the force vectors acting on the object, and then calculate acceleration, velocity, and position

Aha, I was just using a precalced GravitySpeed * timeDelta, not adding mass in there.
quote:Original post by Garibaldi
- a nice description-

quote:Original post by CombatWombat
-a nice expansion on the nice description-

It's making even more sense now, thanks Gari/CW

As for visualisation, I just made my engine draw all the vectors in question and that helps nicely!

[edited by - Aph3x on May 27, 2004 3:33:23 PM]
And to apply thrust I think:

if (mFuel > 0){	// Add thrust.	forceSum += mDirection * (KRocketThrustFactor / KRocketMass);	// Fake lift here for now.	forceSum.mY += KRocketMass*KGravitySpeed;}


before the integration is ok?
Seems to work ok in my tests

[edited by - aph3x on May 28, 2004 6:27:01 AM]
Or should that be:

// Add thrust.
forceSum += mDirection * (KRocketThrustFactor / (KRocketMass*9.8f));

??!

Argh!?


[edited by - aph3x on May 28, 2004 7:38:20 AM]

This topic is closed to new replies.

Advertisement