A C++ program for the alignment of two input meshes.
The class ICP_Solver contains all the functionality for initializing and executing a variant of the basic ICP algorithm.
We use nanoflann for kd-tree implementation, Eigen for matrices, and libigl for the main OpenGL interface.
Example:
ICP_Solver solver = ICP_Solver(data_verts, model_verts);
solver.perform_icp();
aligned_mesh = solver.data_verts;