This homework has separate handouts for the written part:
and the programming part:
Some reasonable parameter values (used in images below):
To help make it easier for you to compile the framework in your favorite IDE,
we have eliminated all packages from the code, so that all
the .java
files sit in a single directory.
You still need the support libraries. The
documentation for the support libraries can be found
here. Unlike the
brush assignment, this assignment does depend on the vecmath
library.
There are some hints we've given to some people, so I'll post them here.
Generally, when you're evaluating a complicated expression and also keeping track of its derivative, you should break the function evaluation down into manageable steps, giving names to the intermediate results. Then you can also compute the derivatives in the same steps, computing the derivatives of the intermediate results and using them in the chain rule down the line. This is vastly easier to debug than one huge formula that could have a typo anywhere.
For instance, suppose I want to evaluate sin(cos^2(sin(x)) + exp(x^3)). I could write out the whole derivative in one step, like this:
but I had to resort to Mathematica before I got that right. On the other hand I could rewrite the formula in steps, like this:
and this one is easy to verify by reading it through step by step.
Here are pictures of all the maps (with unspecified cameras) to help you understand what the surfaces are supposed to look like.