Programming Assignment 3

Due 5:59PM on Tuesday, March 30

In this assignment you use Lagrange multiplier constraints in computer animation of rigid bodies, based on the algorithms described in the SIGGRAPH course notes: Physically-Based Animation Techniques

Implement one of the following options:
  1. Simulate a 3D humanoid marionette, with jointed arms and legs.  The body parts can be spheres, ellipsoids, boxes -- whatever you'd like. The joints should be held together by Lagrange multiplier constraints.  Extra credit: collision detection should keep the arms, legs, body from intersecting.

  2. Simulate a 3D sphere suspended from two fixed-length wires as in the click clack toy shown below.  The wires are defined in terms of Lagrange multiplier constraints.   Extra credit: support collision detection for multiple spheres, simulating the full behavior of the click clack toy.
    click clack toy image


  3. Simulate cars (boxes) sliding on a 3D roller coaster track.   Make it possible to run the simulation with the boxes linked via Lagrange multiplier constraints.  The track is defined by the functions

                x = r1sin a + r2 cos a
                y = r1cos a - r2 sin a
                z = h sin 2 a

    where a = [-Pi, Pi], and the scales r1, r2, and h can vary.  Extra credit: allow the cars be unlinked, and allow them to collide/bump into each other on the rollercoaster track, with proper collision response.

Whatever option you choose, be sure to provide an interface to your program that allows the user to change the parameters of the simulation and also to pull on the model with springs.


Extra Credit

Collision detection as described above.

Submitting Your Report

By the deadline, send the URL for your report WWW page to the grader: Bill Mullally

What You Turn In

Create an HTML document "p3.html" that describes your project. In the first part of the report, write a paragraph that describes how your modules work. Also include psuedo-code and equations for the procedures you developed for your particle animation and procedural texture mapping functions.  Give a block diagram that gives an overview of how the system modules fit together. The detail you give should be sufficient for someone else to implement your system. Also describe the limitations of your approach.  How does the method or your program fail and why?  Discuss the strengths and weaknesses of the methods you implemented, and how you would improve the program if you had more time.

Include at least three different image sequences (grayscale or color is OK). You should include either images or movie files as part of the HTML document you create. 

Finally, include your source files, program executable, and Makefile. Please be sure to tell us what computer platform (e.g., Windows, Linux, Solaris) your tool runs on.

The report you write should be clear and to the point. The code you submit should be well-structured and clearly documented.