EMAIL: warwick@troll.no
NAME: Warwick Allison
TOPIC: Games
COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT.
TITLE: Perpetual Pingpong
COUNTRY: Norway
WEBPAGE: none
RENDERER USED: Povray 3.02
TOOLS USED: Pen, paper, C++ compiler.
CREATION TIME: 1 day to render
HARDWARE USED: 200 MHz Pentium Pro 
VIEWING RECOMMENDATIONS: Turn on looping/repeating.  And play it FAST.
ANIMATION DESCRIPTION:

Two robots play error-free pingpong.

Playing strategy games against computers these days is daunting - even
if you can beat it, it's only because the computer is playing with one
arm tied behind its back.  Some games, like Backgammon and Connect-4
can be played "error-free" by computers, meaning they always play the
best possible move.  But those games have an "end".  Table tennis doesn't.  

DESCRIPTION OF HOW THIS ANIMATION WAS CREATED:

A small C++ program (included) calculates the trajectory of the ball,
and the robot positions sufficient to play such a trajectory.  The
program has a heap of parameters in it, including the size of the table
(I used official Table Tennis association rules), bounciness of the
ball (also dictated by the association), gravity (dictated by the very
large lump of dirt under your feet), as well as the lengths of the arms
and the positions of the robots.  Writing the program had me relearning
lots of physics and maths that I had forgotten from highschool.  

The program repeats the whole process of calculating trajectories until
it finds one which, over the whole game, does not cause any impossible
situations for the robots (eg. the ball out of reach) - like a chess
computer looking many moves into the future.  One tricky part of the
program is that it carefully arranges for the last hit to end up
exactly where the game started, thus providing the cyclic nature of the
animation.

The program generates .inc files which give the settings of variables
for the robots, ball, and camera for each time spans of the animation. 
The timespans are each a bounce of the ball off bat or table, with
every moment in-between calculated by the Newtonian formulas, thus
the animation can be generated for any resolution - time or space
without rerunning the program.

The motion-blur of the ball is done by repeating the ball object with
the time adjusted and the ball faded.  

