I think it works now. I don't know how to tell.
I fixed a bug to make SurfaceOfRevolution<Cylinder2d> work with k != 1.