I just asked this question on ask.metafilter, and it was suggested that I ask here. Though I'm talking about coding something up, this question is about the math behind it, not the implementation.
We have done analysis in the past where we've computed an approximation for Gaussian curvature of a surface in Cartesian coordinates.
What we've been doing for Cartesian (in MATLAB) is
[fu,fv] = gradient(Z) [fuu, fuv] = gradient(fu) [fvu,fvv] = gradient(fv) GC = (fuu*fvv - fuv*fuv)/(1 + fu^2 + fv^2)
So now I have a surface that I'm modeling in cylindrical coordinates, and I can do the same thing as above for $r$ as a function of $\theta$ and $z$. The problem is that it's only taking into account the change in $r$, not the fact that there is curvature inherent in it being a cylinder.
Looking on Wolfram (equations 27, 32 and 37 and thereabouts), it seems like there's a centripetal component that I don't know how to apply. Dividing by the (constant?) radius doesn't seem like it would work, so I think I'm missing something.
Any help would be appreciated, either explaining how to modify these equations to work correctly, or some other approximation that has worked for you.