• FEATURED
• FEATURED
• FEATURED
• FEATURED
• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Sign up now

# how to implement Intertia

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

3 replies to this topic

### #1WiredCat  Members

Posted 23 May 2013 - 01:43 PM

So i have a jet.

I make a force that moves it. but when i set it to 0 (this force) the jet stops, but it shouldn't, it should at least move with this force(because i didn't include drag force )

but i have no idea how to implement intertia there.

lets assume i got drag force (lets call it drag_force)

all forces are vectors with length of acting force and its direction in my case ;]

if this helps you here is the code



void __fastcall TVehicle::ProcessFrame()
{

Gather_All_INFO();

AIRLIERON_LEFT->Frame_tick();
AIRLIERON_RIGHT->Frame_tick();
ELEVATOR_LEFT->Frame_tick();
ELEVATOR_RIGHT->Frame_tick();
RUDDER_LEFT->Frame_tick();
RUDDER_RIGHT->Frame_tick();

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double l;
timin->stopTimer();

l = timin->getElapsedTime();

float dt = float(l);
timin->startTimer();

if (dt <=0 ) return;

float Front_force = Throttle_to_force( Throttle );   //thrust force val

float Q = eGForce * mass;    // gravity force val

ThrustForce_vec  = YPRangle.rf;                 //thrust force direction

pos_from_plane_to_planet_center = vectorAB(pos, zero);

GForce_vec  = Normalize( pos_from_plane_to_planet_center ); //g force direction

GForce_vec 		= vector_multiple(GForce_vec, Q);
ThrustForce_vec = vector_multiple(ThrustForce_vec, Front_force);

result_force = vectors_add(GForce_vec, ThrustForce_vec);//add forces

//divide vector by float
Acceleration = result_force / mass;      // a = F / m

dk = ( dt*dt );

accvel = Normalize( Acceleration );

Translation = vector_multiple(Acceleration, dk);
Translation = vector_multiple(Translation, 0.50f); //(a * t^2 )/ 2
s = V * dt;
accvel = vector_multiple(accvel, s);         //  V0 * t   => convert it to vector
Translation = vectors_add(Translation, accvel);   //add vectors v0t + (at^2)/2   => s= v0t + at^2 / 2
t3dpoint rp = vectors_add(pos, Translation );      //move to new position
if ( rp.y < 0 ) rp.y = 0.0f;
pos = rp;
// v = s / t
V = n3ddistance(pos,old) / dt;  // s = V * t 						v=s/t

old = pos;  //save position

}



as you can see i use result_force

this need to be changed to intertia but how? ;x

like always i attach a video

by the way i have problems with calculation velocity properly but as soon i will deal with this problem and add some things i will make a new post ;P

Edited by ___, 23 May 2013 - 01:55 PM.

### #2Álvaro  Members

Posted 23 May 2013 - 01:48 PM

Start with Euler integration:

acceleration = force/mass;
velocity = velocity + acceleration * dt;
position = position + velocity * dt;


### #3WiredCat  Members

Posted 23 May 2013 - 04:28 PM

thanks, that should do the trick, i will give a reply if i made it work.

### #4WiredCat  Members

Posted 24 May 2013 - 09:54 AM

It works, thank you very much

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.