# Version tracking

Version | Short description
--------|----------------------------------------------------------------------
1.1.7   | Switch build for static library to cmake.
1.1.6   | Major boolean robustness fix, drop CGAL dependency for AABB/distances
1.1.5   | Bug fix in booleans
1.1.4   | Edge collapsing and linear program solving
1.1.3   | Bug fixes in active set and boundary_conditions
1.1.1   | PLY file format support
1.1.0   | Mesh boolean operations using CGAL and cork, implementing [Attene 14]
1.0.3   | Bone heat method
1.0.2   | Bug fix in winding number code
1.0.1   | Bug fixes and more CGAL support
1.0.0   | Major beta release: many renames, tutorial, triangle, org. build

## Version 1.0 Changes ##
Our beta release marks our confidence that this library can be used outside of
casual experimenting. To maintain order, we have made a few changes which
current users should read and adapt their code accordingly.

### Renamed functions ###
The following table lists functions which have changed name as of version
1.0.0:

Old                              | New
-------------------------------- | -------------------------------------
`igl::add_barycenter`            | `igl::false_barycentric_subdivision`
`igl::areamatrix`                | `igl::vector_area_matrix`
`igl::barycentric2global`        | `igl::barycentric_to_global`
`igl::boundary_faces`            | `igl::boundary_facets`
`igl::boundary_vertices_sorted`  | `igl::boundary_loop`
`igl::cotangent`                 | `igl::cotmatrix_entries`
`igl::edgetopology`              | `igl::edge_topology`
`igl::gradMat`                   | `igl::grad`
`igl::is_manifold`               | `igl::is_edge_manifold`
`igl::mexStream`                 | `igl::MexStream`
`igl::moveFV`                    | `igl::average_onto_vertices`
`igl::moveVF`                    | `igl::average_onto_faces`
`igl::plot_vector`               | `igl::print_vector`
`igl::pos`                       | `igl::HalfEdgeIterator`
`igl::plane_project`             | `igl::project_isometrically_to_plane`
`igl::project_points_mesh`       | `igl::line_mesh_intersection`
`igl::read`                      | `igl::read_triangle_mesh`
`igl::removeDuplicates.cpp`      | `igl::remove_duplicates`
`igl::removeUnreferenced`        | `igl::remove_unreferenced`
`igl::tt`                        | `igl::triangle_triangle_adjacency`
`igl::vf`                        | `igl::vertex_triangle_adjacency`
`igl::write`                     | `igl::write_triangle_mesh`
`igl::manifold_patches`          | `igl::orientable_patches`
`igl::selfintersect`             | `igl::remesh_self_intersections`
`igl::project_mesh`              | `igl::line_mesh_intersection`
`igl::triangulate`               | `igl::polygon_mesh_to_triangle_mesh`
`igl::is_manifold`               | `igl::is_edge_manifold`
`igl::triangle_wrapper`          | `igl::triangulate`

### Miscellaneous ###
 - To match interfaces provided by (all) other quadratic optimization
   libraries, `igl::min_quad_with_fixed` and `igl::active_set` now expect as
   input twice the quadratic coefficients matrix, i.e. the Hessian. For
   example, `igl::min_quad_with_fixed(H,B,...)` minimizes $\frac{1}{2}x^T H
   x+x^T B$.
 - We have inverted the `IGL_HEADER_ONLY` macro to `IGL_STATIC_LIBRARY`. To
   compile using libigl as a header-only library, simply include headers and
   libigl in the header search path. To link to libigl, you must define the
   `IGL_STATIC_LIBRARY` macro at compile time and link to the `libigl*.a`
   libraries.
 - Building libigl as a static library is now more organized. There is a
   `build/` directory with Makefiles for the main library (`Makefile`) and each
   dependency (e.g. `Makefile_mosek` for `libiglmosek.a`)
 - `igl::polar_svd` now always returns a rotation in `R`, never a reflection.
   This mirrors the behavior of `igl::polar_svd3x3`.  Consequently the `T`
   part may have negative skews.
 - We have organized the static
 - The previous `igl::grad` function, which computed the per-triangle gradient
   of a per-vertex scalar function has been replaced. Now `igl::grad` computes
   the linear operator (previous computed using `igl::gradMat`). The gradient
   values can still be recovered by multiplying the operator against the scalar
   field as a vector and reshaping to have gradients per row.
 - `MASSMATRIX_*` has become `MASSMATRIX_TYPE_*`
 - The function `igl::project_normals`, which cast a line for each vertex of
   mesh _A_ in the normal direction and found the closest intersection along
   these lines with mesh _B_, has been removed.

0.4.6  Generalized Winding Numbers
0.4.5  CGAL extra: mesh selfintersection
0.4.4  STL file format support
0.4.3  ARAP implementation
0.4.1  Migrated much of the FAST code including extra for Sifakis' 3x3 svd
0.4.0  Release under MPL2 license
0.3.7  Embree2.0 support
0.3.6  boost extra, patches, mosek 7 support, libiglbbw (mosek optional)
0.3.5  More examples, naive primitive sorting
0.3.3  Many more examples, ambient occlusion with Embree.
0.3.1  Linearly dependent constraints in min_quad_with_fixed, SparseQR buggy
0.3.0  Better active set method support
0.2.3  More explicits, active set method, opengl/anttweakbar guards
0.2.2  More explicit instanciations, faster sorts and uniques
0.2.1  Bug fixes in barycenter and doublearea found by Martin Bisson
0.2.0  XML serializer more stable and fixed bug in remove_duplicate_vertices
0.1.8  Embree and xml (windows only) extras
0.1.5  Compilation on windows, bug fix for compilation with cygwin
0.1.1  Alpha release with core functions, extras, examples
