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:
- 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.
- 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.
- 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.