\mainpage
We are using native format for storing polygonmesh data. A simple vector to store all the vertices and then another vector to store polygon data. For simplicity we are using triangle based mesh.
Libraries used:
- Eigen3 is used as maths library.
- r-tree implementation is taken from Boost.
- Tbb can be used for parallizing few of the operations.
- Additionally we are using googletests frameworks for unit testing.
- DOxygen for generating documentation.
To build the project, you might need to install [CMake] and Boost first. While building, CMake downloads googletest repo and build it. So you will need active internet connection.
Then build steps are:
- cd into build directory located inside root directory of project ClosestPoint.
- Run> cmake .. && make -j4 install
- It should build and put all the binaries in build/bin folder.
- You can simply run the executable> ./ClosestPoint and you can run tests with command> ./ClosestPointTests
- Documentation is here> ClosestPoint/build/docs/html/index.html
The project use Boost's r-tree implementation as a acceleration structure for closest point queries. We first find some closest triangles to the query point using the r-tree, then we check these triangles to locate the actual closest point.
Location of closest point is being stored as three items: [Polygon index, vertex indices inside this polygon, barycentric coordinates with respect to these vertices], which can be used as required to evaluate actual point position, surface normal etc.