Do you also have a normal vector for the surface of collision? If so, then you can do friction by dampening the objects’ velocities in the directions perpendicular to the normal (this is a little tricky to do in Verlet, since it doesn’t have explicit velocities, but just needs a bit of math).

For restitution, move the object out by twice the distance vector (fully elastic collision), or by somewhere between 1 and 2 times the distance vector for partially inelastic collisions.

In 2D, using the sep. axis theorem, a collision leaves me with a vector that represents the distance I need to move to get out of collision. this works fine, but I’m not clear on how I apply surface friction and restitution. If I simply project out of collision I have a dead, but very slipperly surface.

Anyone have a code examples of what to do after you have the distance vector of the collision. This is in a Verlet system.