Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Calculating the force of a collision

  1. Feb 4, 2015 #1
    Hi all x i'm doing some physics related code for a game in unity engine. Unity does have a very full featured physics engine, but i can't utilise it in certain circumstances.

    I have a wall made up of pre-fractured little chunks, and each chunk has a connective strength which represents how difficult it is to knock loose from the wall. This strength is calculated as the Tensile Strength of the material (MPa) multiplied by the surface area this chunk shares with other chunks (M^2). Therefore i believe this value is in newtons, and it approximately represents the magnitude of a force required (regardless of direction, or point of application on the surface) to break it loose from the wall and set it free.

    Once that part's done i can hand it over to unity's built in physics engine, but while it's still attached to the wall it is an immovable object, and so i need to manually simulate physics in the case of collisions here.

    I've been reading up on F=MA, but the problem here is that virtual objects don't stretch and deform like real ones, generally, so collisions generally happen in an instant, between singular points, rather than over any appreciable period of time or surface area. This has left me somewhat confused as to how to apply newton's laws, I need help.

    So, my objectives:
    1. When an object hits the wall, i need to determine the force it's going to apply, and see if it goes above the chunk's strength. (but how?)

    2. If it does, then the chunk will be knocked loose, and i need to set the new velocities of both the chunk, and the colliding object, taking into account the energy lost from breaking off the chunk. so the collider will be slowed somewhat, depending on it's mass/energy, but not brought to a complete stop.

    Step 2 is needed because unity will normally see this collision as between a normal physical rigidbody, and a static/immovable object, which results in the former being brought to a complete halt. manually setting the velocities to what they ought to be is the only way i can think to work around this

    If the force is too low, i'll just have the collider stop, or bounce off. the built in engine can handle this easily
    Last edited: Feb 4, 2015
  2. jcsd
  3. Feb 4, 2015 #2
    There's a property of materials called toughness. I don't think you can calculate this without insane microscopic simulations, so you'll have to look it up in a table somewhere. Calculate the collision energy and see if it exceeds the toughness (times the volume of impact). If it does, then the material will be damaged. You can probably tweak the damage depending on how much the toughness is exceeded.

    The chunks coming out will basically follow from inelastic collision physics. Momentum is conserved. Some energy is absorbed into fracturing the material. This will probably be some fudge factor times the toughness times the volume of wall that was destroyed. Some additional energy is absorbed as heat--depends on some elasticity parameter.

    If this is just a game, you don't need super accurate physics.
  4. Feb 4, 2015 #3
    I really don't want to do this. I originally planned to use shear, and i had to scrap that too. Apparently tensile strength is just about the only durability-related property that everyone can agree on, and for most other properties, its a crap shoot whether any particular source lists them. i couldn't find consistent enough sources for all the materials i want to use.

    Can this be done with force?
  5. Feb 5, 2015 #4
    Help still needed. I'm making a fair bit of progress, but i'm running ionto the infinite acceleration problem. Digital objects have no "give" and are completely elastic rigidbodies, which means things just stop dead on collision. The impact happens over one frame, and is functionally either framerate dependant, or results in infinite acceleration on impact

    i need some advice on remedying this. Since there is no collision time, it can't be measured, but i can assign an arbitrary time to it which would solve problems. I need some ballpark figures of realistic stopping times for hard objects though. Say, blocks of steel, or concrete.
  6. Feb 5, 2015 #5
    No, it can't be done with just force.
    Note that toughness scales with volume, whereas tensile strength scales with area. But when you are throwing things at walls, a thicker wall is going to stand up to more than a thin wall. Toughness is what you want.
  7. Feb 5, 2015 #6
    a thicker wall is going to have more of each chunk's surface area connected to other chunks, and therefore will scale just fine. i don't see the issue

    i am also implementing compressive strength for governing the pulverising of chunks into smaller chunks, but that is actually mostly unrelated
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook