HCR - Minimum Distance Point-Surface

It’s easy to know if you are “in” or “out” of a single plane

  • Knowing your position (: avatar) or (: haptic point), and the formula of the plane: we can calculate:

and define as “in” if the result is or “out” if the result is .

Link to original


HCR - Algorithm for Minimum Distance from Surface

Given haptic point (same as just a different name):

the minimum distance from the place ( can be computed as the distance of from (: proxy) where is defined as the projection of onto .

Link to original


HCR - Optimization Problem

We can also see this as an optimization problem:

Then:

We can reformulate the problem as searching for:

Being vectors and we can write:

And also we rewrite the constraint: , () as:

Then the problem becomes:

Lagrangian Approach:

Using the HCR - Lagrangian Theorem we can rewrite the problem as:

and search for its minimum, so:

Then we have:

So, with a bit of substitutions we obtain:


Link to original


HCR - Proxy Point for Triangular Meshes

We can create a plane with 3 points (~ex.: : triangle 1, formed by )

  • So given the triangle we can use the previous formula to calculate the minimum distance from .

So I can receive an haptic feedback proportional to the distance

  • For a smooth object there are no problem with this approach.
Link to original


HCR - Proxy Algorithm

  • Edgy object (Oggetto spigoloso):
    • Notice how for a small displacement of the direction of the Force changes drastically.

  • Proxy algorithm:
    • IDEA: Remember where you entered from.
    1. In case of collision, for the first time @ ( ) we compute the normal proxy and we take the tangent circle for the proxy given a small radius (in the figure below ):
    2. Then given the haptic point @ we find which triangle in my triangular mesh is “ACTIVE”.
      The ACTIVE triangle is the one that intersect the segment
    • Let’s see how this proxy algorithm changes things:
    • In the new case the proxy cannot change triangle so easily, so it results in a more smooth experience.

  • How do we change triangle with the new algorithm?
    • Let’s take for example the following passages:
    • As we can see there is a small error for but it’s accepted.
    • And for we have indeed changed triangle, now the second triangle is active.
Link to original


HCR - Friction Cone

==A way to visualize friction==

The friction cone depends on the (Force Down-ward) and the friction coefficient.


  • Friction Cone:

    • Where:(The friction coefficent () is specific for each pair of object interaction)
    • A force that want to break the friction is applied as shown:

      • is too small to break friction (the object doesn’t move).
      • is big enough (the object begins to move).
      • Graphically is inside the friction cone.
        While is outside the friction cone
    • Knowing where the friction cone is, and how big it is, is extremely crucial, because if i want to apply force to the object without it slipping out (break friction) i need to apply all the forces such that they stay inside the friction cones.

  • ~Ex.: Position of the friction cones
    • Suppose we have this object:
    • Let’s see how the position of the friction cones is useful.
      I apply to the previous object 3 forces: , resulting in this 3 friction cones:
    • Take now an opposite force that tries to break friction.
      It is clear that where i apply the previous 3 forces changes the intensity of the Force needed to break friction:
Link to original


HCR - Proxy Algorithm with Friction Cones

If doesn’t escape the friction cone of then:Meaning that the proxy does not move.

Link to original


HCR - Static and Kinematic Friction

Each material interaction has 2 friction coefficients:

  • One static ().
  • and one kinematic (),

The static friction coefficient is used to break the stacity (so when the object is still), while the second one is used to determine the friction force that slows down the motion.


  • ~Example:
    • Wood on wood: ,
    • Glass on glass: ,
    • Ski on dry snow: ,
    • When the object is moving and (usually true) we approximate the static friction coefficient to 0, so we do not need to calculate it.
    • Basically when we define the friction cone, the angle is equal to:And it depends if the grasp is static or if the object is sliding in the hand.
Link to original