Geometry Processing, Assignment 3
=================================

Mesh smoothing

What you should implement:
--------------------------

1) Smoothing of the mesh using Laplace operator
   new_pos(v) = pos(v) + 0.5 * Laplace(v)

2) Smoothing of the mesh using Laplace^2 operator
   new_pos(v) = v - 0.5 * Laplace^2(v)
   1st: compute the Laplace of the positions involving a vertex's one-ring
   2nd: compute Laplace of Laplacian vectors of all one-ring neighbors
   damping factor 0.5 ensures convergence

Internally, the data that you need for the computations (e.g. edge
weights, etc.) are stored as OpenMesh properties.
Here is a list of functions that you can use to conveniently access
this data:

- eweight(TriMesh* _mesh, const TriMesh::EdgeHandle& _eh) - get/set edge
weight values. Example:

eweight(mesh, eh0) = 4.0;

- newPos(TriMesh* _mesh, const TriMesh::VertexHandle& _vh) - set a vertex's
new position. Example:

newPos(mesh, vh0) = Vec3d(1.0, 2.0, 0.0);

- laplace(TriMesh* _mesh, TriMesh::VertexHandle _vh) - get/set the laplacian
vector corresponding to a particular vertex. Example:

laplace(mesh, vh0) = Vec3d(1.0, 0.0, 0.0);

or

Vec3d v = laplace(mesh, vh0);
