CSE 167 Fall 2004:  Let’s Play some Pool

Written by: Timothy Cheng

Contact info: ttcheng@ucsd.edu

 

        For my project, I made a nice little bar and pool hall.  The room is 32 X 32 X 12 feet with four pool tables, several paintings of animals playing games on the walls, windows, a door, and (of course) a fully stocked bar.  The pool tables are modeled after Olhausen’s Champion Pro table.  They are relatively close to BCA equipment specifications (though they are not tournament size).  The playing surface is 8 feet by 4 feet and is 2.5 feet off the floor.  The holes are each 5.52 inches in diameter and the frame is in a cool black color.  The pool sticks are around 54 inches long and tapered from 1.2 inches at the butt end, to a little more than half an inch on the tip.  The best part about the bar, however, has got to be the happy hour specials every weekday from 2-3pm.

            The controls are pretty simple for my pool table.  To look around, just use the arrow keys.  To turn off the lights in the room, press “1”.

            My original intention was to just create a pool table.  I am fairly satisfied with what I accomplished, but am also very disappointed that I did not have more time to add more features.  At the end of my project, I stopped focusing on the pool table, and started focusing more on the look of the room in general.  I tried to find a nice looking texture for the wall, but just couldn’t find one that looked liked it belonged.  Instead, I just created my own simple one in paint.  I was also originally going to put a texture on each ball with the ball’s number, color, and a stripe for the striped balls.  Compilers, however, take a long time to make and I was unable to implement this feature.

            My table is created using a lot of glut solid cubes.  The challenging parts were the holes and trying to keep my dimensions straight so the pool table would simulate a real pool table as closely as possible.  For the holes, I created a helper function to draw a quarter of the hole using the principle of surfaces of rotation.  Using this, I could create a segment of the proper width, and any height specified.  I also used surfaces of rotation for the stick.  The stick was basically two cones with the tops cutoff and stuck on top of each other.  I used a helper function to make these cones, specifying the height of the cone and the radius of the top and bottom surfaces.  Using this helper function, I could also create cylinders, which were used to create the black butt and tip of the stick.

            I hope you enjoy my project.  Any comments/criticisms would be appreciated an can be sent to ttcheng@ucsd.edu