See the blog post: Processing: Flying Triangles