(adsbygoogle = window.adsbygoogle || []).push({}); Help with Friction

Greetings , all fellow scientists!

I've been struggling with time-step independent physics for a programming project. The problem is that it doesn't seem to be time-step independent after all. Here's some of it in a pseudo-code form. It seems to be the friction part where it goes wrong. The reason I'm calculating friction like that anyway is because this way has a nice property of limiting the speed. ( Should implement surface friction and drag separately for better simulation though. ) The following gets executed at varying intervals. Hope the variable names are self-explanatory.

And now in a shorter form joining the coordinates to vector-type variables. Could have only posted that one but then the variable names would have been less self-explanatory.Code (Text):

``calc acc vector without friction

acc_x = time_step * ( move_force_x / mass )

acc_y = time_step * ( move_force_y / mass )

acc_z = time_step * ( move_force_z / mass )

``calc movement vector without friction

move_x = time_step * ( speed_x + ( acc_x / 2 ) )

move_y = time_step * ( speed_y + ( acc_y / 2 ) )

move_z = time_step * ( speed_z + ( acc_z / 2 ) )

``calc and apply friction

move_force_x = move_force_x - ( move_x * friction_coefficient )

move_force_y = move_force_y - ( move_y * friction_coefficient )

move_force_z = move_force_z - ( move_z * friction_coefficient )

``calc acc vector

acc_x = time_step * ( move_force_x / mass )

acc_y = time_step * ( move_force_y / mass )

acc_z = time_step * ( move_force_z / mass )

``calc movement vector

move_x = time_step * ( speed_x + ( acc_x / 2 ) )

move_y = time_step * ( speed_y + ( acc_y / 2 ) )

move_z = time_step * ( speed_z + ( acc_z / 2 ) )

``calc new speed

speed_x = speed_x + acc_x

speed_y = speed_y + acc_y

speed_z = speed_z + acc_z

``calc new pos

pos_x = pos_x + move_x

pos_y = pos_y + move_y

pos_z = pos_z + move_z

Maybe it's more like a mathematical question but anyway it is wrong to separate those sciences. The physics are not complex here and that's why I thought it'd do with lesser explanation on what it is supposed to do and so on. In case the above is how it should be after all I'll take a look at the part where it calculates the time-step in the 1st place.Code (Text):

``calc acc vector without friction

V_acc = time_step * ( V_move_force / mass )

``calc movement vector without friction

V_move = time_step * ( V_speed + ( V_acc / 2 ) )

``calc and apply friction

V_move_force = V_move_force - ( V_move * friction_coefficient )

``calc acc vector

V_acc = time_step * ( V_move_force / mass )

``calc movement vector

V_move = time_step * ( V_speed + ( V_acc / 2 ) )

``calc new speed

V_speed = V_speed + V_acc

``calc new pos

V_pos = V_pos + V_move

Thanks in advance!

All the best!

TK

**Physics Forums | Science Articles, Homework Help, Discussion**

Join Physics Forums Today!

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Time-step independent friction model

**Physics Forums | Science Articles, Homework Help, Discussion**