Implementation of paper "Coupled Quasi-harmonic Bases"
Usage:
setMu(): set the strength of coupling.
setPackage(): choose between NLopt and Opt++.
setOfftermType(): set the type of off-diagonal type, determine whether the output eigenbases are ordered or not.
setInnerProductType(): choose the type of inner product between correspondence function and eigenbases. If the input is point-wise correspondence, set inner product to standard. If the input is region-based correspondence, set inner product to area-weighted.
setObjectiveType(): choose between changing both eigenbases or only changing eigenbase a with respect to eigenbase b.
enableScaleBase()/disableScaleBase(): optionally scale eigenbases of two shapes, the output is scaled back.
enabldScaleCorrespondingFunction()/disableScaleCorrepondingFunction(): If the input is point-wise correspondence, call disableScaleBase(). If the input is region-based correspondence, call enableScaleBase().
setCouplingScale(): set different coupling strength for different eigenbases. Sometimes we want strong coupling for the first few eigenbases.
enableOutput()/disableOutput(): enable/disable output of optimization.
Dependency: