hemispherical_area_preserving_map: Map a simply-connected open triangle mesh to a hemisphere in an area-preserving manner

This code computes the hemispherical area-preserving parameterizations of simply-connected triangle meshes using the method in [1], which can be further combined with the hemispehrical harmonics (HSH) functions for shape representation.
Any comments and suggestions are welcome. 

If you use this code in your own work, please cite the following paper:
[1] A. Giri, G. P. T. Choi, L. Kumar, 
    "Open and closed anatomical surface description via hemispherical area-preserving map."
    Signal Processing, 180, 107867, 2021.

Copyright (c) 2020-2022, Gary Pui-Tung Choi
https://math.mit.edu/~ptchoi

===============================================================

Usage:
map = hemispherical_area_preserving_map(v,f)

Input:
v: nv x 3 vertex coordinates of a simply-connected open triangle mesh
f: nf x 3 triangulations of a simply-connected open triangle mesh

Output:
map: nv x 3 vertex coordinates of the hemispherical area-preserving parameterization

================================================================
Dependency:
- disk-conformal-map: for computing the initial disk conformal parameterization 
  https://github.com/garyptchoi/disk-conformal-map

- optimal-mass-transport: for computing the optimal mass transport map
  https://github.com/cfwen/optimal-mass-transport

- polybool_clipper: Polygon Functions for Octave & MATLAB (*** note: this part is in C/C++ and the user may need to build the mex functions first)
  https://sites.google.com/site/ulfgri/numerical/polybool/

- matGeom: Matlab geometry toolbox for 2D/3D geometric computing
  https://github.com/mattools/matGeom

- geometry-processing-package
  https://github.com/cfwen/geometry-processing-package