Sign in to follow this  

Incorporating rotation in a simulation of billiard

This topic is 4593 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I've written a basic billiard simulation but can't figure out how to incorporate rotation into the mix. How do you calculate the angular velocity of a billiard ball struck by a cue stick? I assume that the user always strikes the ball in the middle (i.e. at the centre of mass) so initially there should be no spin aroung the vertical (usually 'Y') axis. I understand that friction between the ball and the table causes the ball to rotate but how is the angular velocity calculated in the first place? Initially, the angular velocity is 0, how exactly does friction affect the former's components? P.S.: I have read http://www.gamasutra.com/features/20000516/lander_02.htm but am still unclear about this.

Share this post


Link to post
Share on other sites
You need to understand a few things to determine angular velocity. You need to know how to calculate the torque generated by a force and how to calculate the moment of inertia of an object.

Torque is effectively your force for angular velocity, and moment of inertia is effectively your mass. From these two you can calculate angular acceleration, and from there you can determine angular velocity. Since pool balls are spherical and you're pretty much playing on a 2d surface (unless you're simulating full 3D and allowing balls to jump off the table), you don't have to worry about tensors for now.

But when dealing with a full 3D environment that allows 3 axis of rotation and irregular objects, you have to use tensors as well, since those irregular objects will have different moments of inertia for each of it's 3 axis of rotation and a Tensor is basically just a 3x3 matrix that contains these moments of inertia.

formula for calculating moment of inertia of a sphere is I = 2/5MR^2 (M is the mass and R is the radius, I will be the moment of inertia for that sphere)

Share this post


Link to post
Share on other sites
The environment [b]is[/b[] full 3D but I don't allow any modification of the Y coordinate of the balls (i.e. the balls always stay on the table.

To sum up, in order to incorporate rotation into the mix I need to calculate the following (in that particular order):

1. Torque.
2. Moment of inertia.
3 .Angular accelaration.
4. Angular velocity.

1. The user strikes the ball (or the ball collides with another ball) at the centre of mass, the ball starts rolling, and due to friction it also starts rotating. How do you calculate torque?
Is it T = r x F = r F sin(theta)?

r is a vector that points from the axis of rotation to the point where the force acts.
F is the force applied to the sphere (i.e. hitting it with the cue stick).
theta is the angle between 'r' and 'F'

2. Moment of inertia for a solid sphere is I = 2/5MR^2 wher 'M' is the mass and 'R' is the radius of the sphere.

3. How do you calculate the angular accelaration?

4. Is the angular velocity given by w = (r * v) / (|r|^2) ?

Share this post


Link to post
Share on other sites
All the angular formulas correlate directly to their linear counterparts. Torque is the Force, Moment of Inertia is the "angular mass" if you will, and angular acceleration is of course the acceleration.

So angular acceleration is equal to the torque divided by the moment of inertia about that axis.

All your other formulas look correct.

Share this post


Link to post
Share on other sites

This topic is 4593 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this