# Research Tools

### Dev tools

- Mercurial
- essential for accessing our HG repositories

- Tortoise HG
- a GUI tool of HG repositories

- Meld
- Meld is a graphical diff tool for Linux which can integrate very easily with Mercurial. It makes dealing with HG merges a lot easier.
- For Windows, you may use Beyond Compare.

- Python
- Python is very helpful, on any platform. With Python, you can do everything from process and transform data to run experiments to drawing figures and plots programmatically ( with libraries like matplotlib, numpy, scipy, etc.)

### Edit tools

- LaTex
- Inkscape
- Inkscape is a nice and easy to use multi-platform vector drawing tool that can produce perfect PDF and EPS that are suitable for LaTex papers. In fact latest versions of Inkscape support putting LaTex equations as part of Inkscape drawings. There's also Python scripting support and lots of plugins available on the web. One of the other advantages of Inkscape is that its native format is SVG (which is basically an XML file). You can create or modify Inkscape figures by directly editing the XML.

- Gnuplot
- For plotting, gnuplot is pretty easy. You can have data in a file, or pipe data in STDIN. You can even have it plot live during the execution of your program by piping plotting commands into gnuplot. It can do pretty advanced stuff.

- Maya or Blender
- R statistics package
- Fancier stuff for stats and plotting

- Meshlab or Deep.Exploration
- Useful for dealing with different 3D model files.

### Code Libraries

- OpenGL
- GNU GSL
- general scientific functions

- Eigen
- for linear algebra
- It's pure template header library so it's readily usable in most applications.
- It does matrices, vectors, and quaternions as well as transformations and rotations and euler angles and matrix decompositions and solving.
- There are a lot of examples and documentation.
- It is very fast and you can enable vectorization for SSE2/3/4.
- It has support for dense and spare matrices.

- GEOS
- for geometry

- LEDA
- data types including graphs

- CGAL
- for geometry computing

- VisiLibity
- visibility algorithms in 2D

- OPCODE
- collision detection often compared to RAPID or SOLID

- Yaobi
- another collision detection library like PQP or OPCOODE

- Bullet and ODE
- physics and collision detection

- GMP
- GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers.

- MPFR
- operations on matrices, vectors and quaternions

- Point Cloud Library
- 2D/3D point cloud processing tool.

- Ceres
- used by Google to solve nonlinear least squares problems. It's used for estimating the pose of Goolge Street View var and also align 3D model to photographs.

Video

- There are videos lectures on linear algebra of Professor Gilbert Strang from MIT.