**As-rigid-as-possible 2d deformations**link

Implement an interactive tool for deforming two-dimensional object (e.g., for animating a character) which keeps the object as rigid as possible. The user moves some points on the object to new positions; a system of equations is constructed and solved at each step to find new positions.**Snakes (Active contours)**link

*Snakes*are widely used in medical imaging to find feature curves in images, such as boundaries between organs. A snake is a curve moving through the image under several forces. One force (bending) tries to keep is smooth; another force pushes it towards locations in the image where a feature is likely to be.**Cloth simulation with implicit time-stepping (no collisions)**link 1, link 2

Implement a simple 3D cloth simulator, with bending, stretching and damping forces included, and implicit time stepping which The cloth itself is a grid of masses connected to each other by springs. The important differences from the spring simulator we have is that the whole thing should be in 3D and include bending and damping forces.-
**Intrinsic surface parametrization with natural boundary conditions**least-squares conformal and autalic link

Mesh parametrization (that is, assigning planar coordinates to vertices of a mesh) is a common operation used, most commonly for texture mapping (changing surface color or other properties according to color variation in an image). Parametrization is used for a variety of other purposes, from remeshing for engineering simulations to mapping the brain surface in medical imaging. -
**Inverse kinematics/robot simulator**link

Articulated objects consisting of rigid joints that can rotate with respect to each other are common in animation and robotics. It is often necessary to figure out the joint angle rotations so that some of the parts of the object are in particular positions, which requires solving a nonlinear system of equations efficiently. Implement a system that would allow to compute how the joint angles should change for a robotic arm or character extermities to follow user-defined trajectories. -
**Radiosity algorithm**

One way to simulate lighting is to write the light balance equation (all the light reflected from a small area A is the sum of light reflected from all other areas in the direction of A, scaled by A's reflectance coefficient). Radiosity is a method for computing lighting based on solving a linear system of equations obtained in this way. It adavantages include ability to handle multiple diffuse reflections and soft shadows. Implement a full-matrix version with piecewise constant elements. If you decide to work on this project, I'll give you a copy of several chapters of a book describing the details of the algorithm. The wikipedia article provides an overview. -
**Poisson image editing**link

In photo editing, one often wants to combine parts of different images in a seamless way. It turns out that one way to do it is to solve a particular type of Poisson equation numerically. Implement an image editing system that allows you to do seamless cloning and color transfer as described in the paper. **Reaction diffusion textures.**link 1 link 2 Many natural patterns (stripes on a zebra, mosaic patterns on skin etc) arise from growth driven by chemical gradients. One can use relatively simple equations (reaction-diffusion equations) to describe such growth. Changing parameters in these equations allows one to obtain different interesting patterns. Implement a tool for generating reaction-diffusion textures as described in the second paper, reproduce some of the patterns presented there and design new ones.