• Create Account

### #Actualdabo

Posted 23 April 2012 - 10:38 AM

I did some more googling and managed to find something called Coefficient of restitution: http://en.wikipedia...._of_restitution, perhaps this is what you were referring to? It says:

For an object bouncing off a stationary object, such as a floor:

, where

is the scalar velocity of the object after impact
is the scalar velocity of the object before impact

Some more googling led me to this document http://www.dissertat...rson_042308.pdf, it says:

Vertical drop tests to determine the puck’s coefficient of restitution (COR) have been performed and found COR values in the range of .45-.55 at room temperature and .12-.27 for frozen pucks [1].

The average found at 25° F (~ -3.9° C) was apparently 0.267 so I will try to use this number. Is it as simple as to just calculate:

v = 0.267 * u?

In code I get the following:

/* Collision with ice. */
/* iceNormal and velocity are of type Vector3. */

/* Normalize the normal of the ice i.e. (0,1,0) */
iceNormal.Normalize();

/* Reflect the velocity vector so that the puck bounces up again. */
velocity.Reflect(iceNormal);

/* Calculate velocity after collision, v = Cr * u */
velocity = 0.267 * velocity;


The result looks pretty good, does this look correct to any of you guys?

### #1dabo

Posted 23 April 2012 - 10:36 AM

I did some more googling and managed to find something called Coefficient of restitution: http://en.wikipedia...._of_restitution, perhaps this is what you were referring to? It says:

For an object bouncing off a stationary object, such as a floor:

, where

is the scalar velocity of the object after impact
is the scalar velocity of the object before impact

Some more googling led me to this document http://www.dissertat...rson_042308.pdf, it says:

Vertical drop tests to determine the puck’s coefficient of restitution (COR) have been performed and found COR values in the range of .45-.55 at room temperature and .12-.27 for frozen pucks [1].

The average found at 25° F (~ -3.9° C) was apparently 0.267 so I will try to use this number. Is it as simple as to just calculate:

v = 0.267 * u?

In code I get the following:

/* Collision with ice. */
/* iceNormal and velocity are of type Vector3. */

/* Normalize the normal of the ice i.e. (0,1,0) */
iceNormal.Normalize();

/* Reflect the velocity vector so that the puck bounces up again. */
velocity.Reflect(iceNormal);

/* Calculate velocity after collision, v = Cr * u */
velocity = 0.267 * velocity;


The result looks pretty good, does this look correct to any of you guys?

PARTNERS