Computing discrete shape operators on general meshes | Synapse