It turns out Chain1 and Chain2 had even more code in common.  Extract field, and pull constructor bits up.
The Point2D class can't be used in plain java applications, so I threw together Point2DF.
Now that web browsers support animated SVGs, use our math to create SVG elements so the teeth that are computed in the wallpaper appear in animated approximate form inside the SVG.