Conservation of Linear Momentum+ Elastic and Inelastic collision

Click For Summary
SUMMARY

The discussion centers on implementing a physics engine for a game, specifically focusing on the conservation of linear momentum during elastic and inelastic collisions. The user seeks to derive the impulse in Newton-seconds (Ns) from the conservation of momentum formulas, while also incorporating the coefficient of restitution to account for varying elasticity between colliding objects. Key points include the need to calculate impulse based on object masses and velocities, and the challenge of resolving momentum in two dimensions. The user aims to create a more realistic collision simulation by assigning individual elasticity values to objects.

PREREQUISITES
  • Understanding of conservation of linear momentum
  • Familiarity with elastic and inelastic collision formulas
  • Knowledge of impulse and its relation to momentum
  • Basic vector mathematics for 2D collision resolution
NEXT STEPS
  • Research how to derive impulse from conservation of momentum equations
  • Learn about the coefficient of restitution and its application in collision physics
  • Study vector resolution techniques for handling 2D collisions
  • Explore advanced collision detection and response algorithms in game physics
USEFUL FOR

Game developers, physics engine programmers, and anyone interested in creating realistic collision simulations in interactive environments.

Nanako
Messages
39
Reaction score
0
hi everyone. I'm working on a physics engine as part of a game I'm making, a hobby project. Up until this point I've implemented inter object collisions in a rather quick and dirty manner. Whenever something moves into something else, it is simply teleported back out to the edge. This implementation worked for a while, but amongst other problems, it causes anything not currently moving to be an immovable object, which is not good.

Since i already have support for forces, impulses, and friction, I've decided it's time to re-examine my collisions and make a better model for it.

I believe the formula i need for elastic collision is here: http://en.wikipedia.org/wiki/Momentum#Conservation_of_linear_momentum

the big pair of formulae, just under where it says "In one dimension" in bold letters. however, i need a little bit of help rearranging it. Those formulae give the final velocities of the object as an output. But i'd like to not go that far. The output I'd like is the Impulse to apply to both objects, in Ns (Newton-seconds). As i understand, both objects in a collision will receive the same impulse. I want this so that i can do other (game related) things with it before applying it. If anyone could help with adjusting the formula to give me that, it'd be helpful.


The second issue i have though, is that the formula only covers perfectly elastic collisions. And there's a separate formula for perfectly inelastic collisions. This seems inherently wrong to me, as nothing in nature is completely one or the other.

What i'd like to do is to figure out a way to incorporate the coefficient of restitution into things (the measure of elasticity between the objects). Considering the problem, i believe it will work similar to the coefficient of friction, in that either component having low elasticity will drive the coefficient towards zero. For example, a snowball thrown at a window will smush against it rather than bouncing off, even though one of the two is highly elastic, because the other is not. This is mostly just logical thought on my part.

I already have a simple formula for calculating the friction coefficient that i would probably reuse (sqrt(ab)). Assuming i keep within the bounds of a and b always being between 0 and 1, that would ensure my coefficient is always likewise.

Once i have a coefficient of restitution, how to incorporate it is the next step. I really don't know here, but logic tells me that something like multiplying the impulse by the coefficient, would work well.

what i ideally want to do is to be able to assign individual elasticity values to objects within my engine, work out a coefficient between them. Work out a collision impulse for the collision based on the object's masses and velocities, and figure out a way to combine the impulse and coefficient, before applying the impulse to the objects. I believe this should give me a more well rounded collision simulation, but i need some assistance to fill in the blanks.

I'm interested in any thoughts and assistance anyone can provide on these two subjects
 
Physics news on Phys.org
bump. can anyone assist ?
 
You have two things:
- Total momentum vector : always conserved 100%
- Total kinetic energy : conserved 100% only in perfectly elastic collisions. Otherwise reduced depending on the coefficient of restitution the mass ratio and the frame of reference.
 
Hello everyone ^^ I got sidetracked from this for quite a while working out other collision related things. Now it's time to pick up and actually start it. Unfortunately i still need lots of help.

So then, i'll start with a few questions that's on my mind.


1.
If momentum equals mass*velocity, and momentum in a closed system is always conserved, then how is it possible for a collision to result in reducing the velocity of both objects? If one object is slowed by a collision, isn't it necessary that the other gains velocity to keep the total momentum the same?



2.
I'm also looking for some clarification of this quote:

In multiple dimensions

In the case of objects colliding in more than one dimension, as in oblique collisions, the velocity is resolved into orthogonal components with one component perpendicular to the plane of collision and the other component or components in the plane of collision. The velocity components in the plane of collision remain unchanged, while the velocity perpendicular to the plane of collision is calculated in the same way as the one-dimensional case.

For example, in a two-dimensional collision, the momenta can be resolved into x and y components. We can then calculate each component separately, and combine them to produce a vector result. The magnitude of this vector is the final momentum of the isolated system.

I already have my velocities stored as a two-part vector (this is 2D. x and y) but I'm having trouble understanding how this relates. Would i calculate the x momentum from the x velocity, and do all the calculations on that value, then repeat it for the y? or is it more complex than that ?


3.
I'm now unsure if i really understand impulse very well. From a quick glance here: http://en.wikipedia.org/wiki/Newton-second
It appears that the Newton-second is the unit of momentum, as well as impulse. This is a link didn't quite make mentally. Does that then mean that i can apply the total momentum of the system, as an impulse, to achieve the desired change in velocity? (of course, one object will receive the impulse*-1). Or would it perhaps be half of the total system momentum ?

although even then, I'm sure this would only give me the magnitude of the impulse value. I still need to directionalise it. This I'm not sure about, any thoughts are appreciated.

An impulse value is my ultimate aim for this exercise, as i want to be able to do game-y things to it before actually applying it.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 11 ·
Replies
11
Views
4K
  • · Replies 25 ·
Replies
25
Views
4K
  • · Replies 35 ·
2
Replies
35
Views
4K
  • · Replies 10 ·
Replies
10
Views
5K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K