Friction in the movement of points

Is there a component in kangaroo with a goal to simulate the frictional force for a set of moving points?

I’ve a few moving points in the x-y plane, Is there is a goal to simulate the frictional force on the points based upon their velocity.

Hi @imruphan,

You could simply calculate the friction vector that corresponds to the reversed velocity vector of each moving point, and use a Load component as a goal.

Yes that’s exactly what I want to do, but the points are moving due to an existing force and how to find the velocity of them at a particular instance?

Hi @imruphan,
Can you give a bit more context about what you want to do?
It might be possible to use the PlasticAnchor goal here. This can act like friction in all directions, not just on a particular plane. If you know already the points are always staying on the plane though, it could work.
Otherwise I can share a custom floor friction goal. Do you need static or just dynamic friction?

1 Like

I’ve few points which experience a force based on the distance between them. I need a counter force like a friction goal for this. I guess the dynamic custom floor friction goal would work.

Here’s what I mean with the plastic anchor:


friction_plasticanchor.gh (13.9 KB)
8 Likes

I have a mesh which moves in all directions. I have used load for gravity. Few points of the mesh touch the floor. I need to an opposing force on these points. Therefore a plastic anchor would not be an ideal solution as it restricts motion of points which aren’t touching the floor and movement of all the points in z direction.

Here’s a custom floor goal with friction.


FrictionFloorGoal.gh (15.9 KB)
5 Likes

what is the strength and limit parameter mean?

Earlier you had sent me an example of PLaw which can be used to simulate movement of charged points. I tried to apply the custom goal on it and it doesn’t seem to restrict the motion of the points.
PLaw with friction.gh (23.0 KB)

I just realised I forgot to assign one of the variables. Here’s an improved version of the file above:
FrictionFloorGoal2.gh (15.2 KB)

In addition to the usual vertical reaction, the floor applies a horizontal force.
When a point first goes below the ground plane, the projection of that point onto the plane becomes the target. If it moves away from this target it gets pulled back with a spring-like force (the strength of which is the strength parameter you set). If it moves further away than a certain limit (the limit parameter you set), then the target point gets pulled towards it. This is similar to the PlasticAnchor, and allows it to behave like static friction, where the point stays in place up to a certain force then starts to slide once this is exceeded.

It doesn’t really make sense to combine this with that PLaw example as it is, since that was all purely in the XY plane, and the points are not moving above or below this, so no need for the checks in the floor friction goal. What is the aim here?

The aim isn’t to apply it to PLaw. I was just testing it with that example and found that it wasn’t restricting the motion. Why is that?

The points were not below the XY plane, so were not being affected by the floor.
If you move the target mesh below Z = 0,
and also apply the fix in the variable assignment - then it restricts the motion:
PLaw with friction2.gh (11.9 KB)

2 Likes