ICPlib: Basic libraries for the ICP algorithm in Linux.
Author: Maks Ovsjanikov, Stanford University

Description: This directory provides basic tools that you can use for your
    programming assignment. These are structured as follows:

    ./ann -- The ANN nearest neighbor library
    ./algebra -- Linear algebra code for matrix computations, including an SVD solver
    ./viewcloud -- A point cloud viewer based on the OpenGL widget from QT.

Installation: To compile this, you will need QT4. The simplest way to install
    it, if you don't have it already is through installing qt4-devel rpm. If you
    are running Debian/Fedora Core you can run "yum install qt4-devel" as
    root. In Ubuntu you can run "sudo apt-get install qt4-devel." Otherwise,
    see http://www.qtsoftware.com/downloads for installation instructions.
    Once you have QT installed, do the following:

    cd ./ann
    make linux-g++
    cd ../viewcloud
    qmake-qt4 viewcloud.pro
    make

    This should create an executable file in the viewcloud directory called viewcloud.

Usage: Run "./viewcloud ../data/Model.txt" to view the point-cloud in Model.txt
    file. This will allow you basic 3D viewing of a point-cloud, and will
    demonstrate how to create a kd-tree that can be used for nearest neighbor
    search.  As described in class, a kd-tree is a data structure that allows to
    answer nearest neighbor queries very efficiently.

Notes: For this assignment you will be required to compute the optimal alignment
    between 2 shapes. This requires some basic linear algebra (the SVD method
    described in class), that you can do using the algebra libraries that are
    provided. These libraries are taken from TNT toolkit:
    http://math.nist.gov/tnt/ 
    Please look there for documentation and examples.
           	
