Elliptic curves are solutions to the equation $y^2 = x^3 + g_2x + g_3$, where $g_2$ and $g_3$ are fixed constants. Rather than defining them over only the real numbers, though, we can let $x$ and $y$ take values in the complex plane. There are more solutions there than a single curve’s worth — in fact, elliptic curves over the complex numbers are tori, the technical word for donut shapes. The central black-and-white canvas plots the elliptic curve over the real numbers, while the four surrounding canvases help show the structure of the complex torus: all points on it satisfy $x = \wp(z, \tau)$ and $y = \wp'(z, \tau)$, where $z$ is a complex number, $\tau$ is determined from $g_2$ and $g_3$, and $\wp$ is the Weierstrass $p$-function. Both $\wp(z, \tau)$ and $\wp'(z, \tau)$ are plotted as functions of $z$, along with something called the $j$-invariant — two elliptic curves arising from different values of $g_2$ and $g_3$ are actually the same if the two values of $j(\tau)$ are equal. The final canvas plots $j(\tau)$ as a function of $g_2$ and $g_3$, and lets $g_2$ and $g_3$ be changed with a draggable.
The idea for this applet, along with the code implementing all of the complex maps, is due to Andy Huchala. I handled the elliptic curve plotter and the code tying all of the canvases together.