I'm trying to calculate the mean curvature over the surface of a discrete mesh that I generated from the computational software SE (Surface Evolver) and I want to make sure I can calculate the same curvature energy I got from SE.
In SE, I used the built-in function star_perp_sq_mean_curvature to calculate the curvature energy. There is a software manual https://kenbrakke.com/evolver/html/quants.htm#star_perp_sq_mean_curvature however, I think a lot of details are under the hood.
What I want to understand is,
- this 30 yo software calculates the curvature energy in a flash second while my code takes mins
- when the surface of the mesh is pretty smooth, the value I calculate is not much different from that of SE but once the mesh has some locally sharp patches, the calculation becomes quite off from SE
I think there are a lot of ways to approximate the mean curvature, for instance, the method here How to speed up estimation of Mean and Gaussian curvatures on triangular meshes? works pretty well but not as fast as SE does and the numbers are not the same.
Maybe I will have to open up the hood to completely mimic the calculation, but I wonder in case, if anyone knows how to code the mean curvature calculation that gives the same number with SE, or if there is a way to calculate the mean curvature of a mesh with ~10^4 vertices in a second with a good approximation level.