This is a course project I did from CS 4496 computer animation class. In this project, I implemented a 2D particle-based constraint dynamic system with three different constraints: distance constraint, circle constraint, and a sine constraint.

Distance Constraint

For two points $p_1$, $p_2$, and the disired distance between them $d$, the constraint is $C(p_1,p_2) = \frac{1}{2}(p_1-p_2)^T(p_1-p_2)-\frac{1}{2}d^2$

Circle Constraint

For a point $p$, circle center $p_c$, and circle radius $r$, the constraint is $C(p) = \frac{1}{2}(p-p_c)^T(p-p_c)-\frac{1}{2}r^2$

Sine Constraint

For a point $p$, amplitude $A$, frequency $\omega$, and virtical offset $c$, the constraint is $C(p) = p_y-Asin(\omega p_x)+c$