I'm trying to make a particle system where when particles collide, they merge together, to get the new velocity vector the smaller particle's force is added to the larger one. However, this isn't exactly how I want it to work because when a small particle hits the edge of a large particle it shouldn't simply move in the direction it was hit. It should impart a rotational force, and that should be resisted by inertia. The further away from the center the more it should rotate the particle as opposed to pushing it. What is the physically accurate way to approach this problem?
The correct physics to use here is conservation of angular momentum.
For the two particle collision you describe, it will be easiest to calculate the angular momentum about the center of the large particle. Then the initial angular momentum will be L=mvr, where m and v are the small particle's mass and velocity, and r is the perpendicular distance from the small particles trajectory to the center of mass of the large particle. The final angular momentum will be L=Iw, where I is the moment of inertial of the large particle, and w is it's angular velocity.
Solving these gives,
mvr = Iw w = mvr/I
If the large particle is a sphere, then it's moment of inertia will be I = (2/5)MR^2. So,
w = (5/2)(mvr/MR^2)
I suggest reading a bit about angular momentum, if this doesn't call the topic to mind.
Note also that this matches part of your intuition, that the "further away from the center the more it should rotate the particle as opposed to pushing it". This is the r parameter, so the larger r is, the more it rotates (ie, w is larger). But the other part of this intuition is incorrect: it doesn't rotate more "as opposed to pushing it". It is pushed the same amount, that is, the center of mass about which this combined particle will spin will move at the same speed in both cases, since this is due to conservation of linear momentum which is independent of r. This incorrect intuition probably comes from the idea of conservation of energy (that if more energy goes into spinning of the particle than it's going to have to move slower), but that's not useful or correct in an inelastic collision (such as here when the particles stick together).
Below are answers to possible questions:
Are linear momentum and angular momentum independent?: Yes, linear and angular momentum are independent in the sense that both quantities are always independently conserved within a closed system (ie, one that has no external forces or torques applied to it). They are different in some ways, for example, linear momentum is a fundamental property of all masses whereas angular momentum is a derived quantity that's primarily useful only for rigid bodies.
What's the difference between momentum and force?: Momentum is a property of a body, force is a thing that's externally applied to a body that changes its momentum. Similarly for angular momentum: Angular momentum is a property of a body, torque is a thing that's externally applied to a body that changes the angular momentum. So when the question mentions, "get the new velocity vector the smaller particle's force is added to the larger one". This statement is true if the word "momentum" replaces "force", but without that substitution it doesn't really work from a physics perspective. And in this case, the correct momentum is linear momentum (p=mv), not angular momentum.
When are conservation of linear and angular momentum useful: In these rules, it's important to keep in mind that the conservation rules only apply to closed systems, that is, systems without external forces and torques. To understand this, consider two variations on a somewhat similar example: 1) If a spinning wheel is dropped onto the ground, then the ground will apply an external force to the edge of the wheel (so it's both an external force, and a torque about the axil) and this force and torque will both reduce the spin of the wheel (the external torque will reduce the angular momentum) and make it move forward (the force will increase the linear momentum). That is, neither the linear or angular momentum are conserved because both an external force and torque have been applied. But, 2) if two spinning wheels collide in space (so it's a closed system with only two interacting bodies), then the collision will preserve both the total linear momentum and the total angular momentum.
How about elastic vs inelastic collisions: Unlike conservation of energy which only holds for elastic collisions, conservation of linear and angular momentum holds for both elastic and inelastic collisions.
If a billiard ball (pool, snooker, whathaveyou) hits another 50% from full on, I am pretty sure there is no creation of angular momentum.
If the first ball had no rotation, I don't think the 2nd ball would be rotating after being struck.
That said, if you did want to introduce it on collision, just take the cross product between vector A and B, where:
A is the velocity vector of ball 0.
B is the unit vector pointing from ball 0 to ball 1.
Then use the magnitude of the cross product as a measure on how much side-ways the impact was. Use the sign to determine which direction to spin the particle, L or R.
If you work in 3D, just use the entire cross product vector for rotation direction and magnitude.
If both balls are moving, you should probably do the same again with roles reversed.
I think more physically correct would be not to add angular impulse based on grazing factor. Instead, transfer existing momentum, regardless on how much full-on the contact was.But I think that requires taking elasticity into account.
I am not able to write down the exact formulas from the top of my head, but some starting points:
- you need to define the friction coefficients between the two objects. Friction is a function of both object's surfaces, but you can simplify to giving each surface a coefficient, and always use the larger one when two objects connect.
- you need to define each object's elasticity, between 0 and 1. A billiard ball would be very near to one, and for example foam would be about zero. Again, you can simplify, this time to always use the smaller value.
- when the objects touch, the total momentum is always kept (mass1 * velocity1 + mass2 * velocity2 = const, where velocities are vectors)
- also, the total energy is always kept, but a part of it is converted to deformation energy = warmth (mass1 * velocity1^2 + mass2 * velocity2^2 = const)
- your elasticity defines how much energy gets converted into deformation
- your friction coefficient defines how much energy gets converted into rotation
- the rest goes into v1 and v2 after the bounce
- from the two equations, you can calculate the momentum and rotation of each object after the touch: (1) total momentum before = total momentum after touch = const; (2) total move energy before, minus deformation, minus rotation = total move energy after the touch.
- from the amount of energy going into rotation, and the data about the object's rotational inertia, you can calculate the rotation speed of each object
That is all not that trivial, but such is the real world.