[
    {
        "Variant name": "main",
        "Reviewer name": "Nicolas Bonneel <nicolas.bonneel@liris.cnrs.fr>",
        "Is master variant (boolean)": true,
        "Is variant deprecated (boolean)": false,
        "Title": "Bounded distortion harmonic shape interpolation",
        "DOI": "10.1145/2897824.2925926",
        "Year": 2016,
        "ACM Keywords": [
            "Animation",
            "Image manipulation",
            "Shape analysis"
        ],
        "Topic {Rendering, Animation and Simulation, Geometry, Images, Virtual Reality, Fabrication}": "Geometry",
        "Co-authors from academia (boolean)": true,
        "Co-authors from industry (boolean)": false,
        "ACM Open Access (boolean)": false,
        "PDF on the authors' webpage / institution (boolean)": true,
        "PDF URL": "https://people.mpi-inf.mpg.de/~chen/papers/bdhi.pdf",
        "PDF on Arxiv or any openarchive initiatives (boolean)": false,
        "Arxiv/OAI page URL": "",
        "Project URL": "",
        "Code available (boolean)": true,
        "If code not available, pseudo-code available (boolean)": false,
        "If pseudo-code, could the paper be trivially implemented? {0..4}": "",
        "Code URL": "http://people.mpi-inf.mpg.de/~chen/bdh.zip",
        "Code URL2": "",
        "MD5 sum (for archives)": "1EB42B53494A8E10BD7D8CD66E163FB7",
        "git/hg/svn commit hash or revision number": "",
        "MD5 sum (for archives) URL2": "",
        "git/hg/svn commit hash or revision number URL2": "",
        "Software Heritage permalink": "",
        "Software type {Code, Binary, Partial Code}": "Code",
        "Code License (if any)": "unspecified",
        "Are the code authors explicit? (boolean)": false,
        "Build/Configure mechanism": "IDE Project (VS,..), Not applicable (python, Matlab..)",
        "Dependencies": "cvx/mosek/glsl/opengl",
        "Does the software require paywall/proprietary software/material (boolean)?": false,
        "Does the code need data (not examples) (boolean)": false,
        "Nature of the data (pretrained model, LUT...)": "",
        "License of the data": "",
        "Able to perform a replicability test (boolean)": true,
        "If not able to perform a test, was it due to missing hardware/software? (boolean)": false,
        "Documentation score {0=NA,1,2,3}": 1,
        "Dependencies score {0=NA, 1,2,3,4,5}": 5,
        "Build/configure score {0=NA, 1,2,3,4,5}": 2,
        "Fixing bugs score (if any) {0=NA, 1,2,3,4,5}": 2,
        "Replicate paper results score {0=NA, 1,2,3,4,5}": 5,
        "Adaptability score to other contexts {0=NA, 1,2,3,4,5}": 5,
        "Time spent for the test (code download to first successful run, [0,10], 10min slots, 100min max)": 10,
        "Operating system for the test": "Windows",
        "Build instructions/comments": "Launching the code using the compiled .exe gui is easy and runs smoothly. Just add mosek to matlab's path using\naddpath('C:\\Program Files\\Mosek\\9.1\\toolbox\\R2015a')\n\nHowever, if one want to recompile the gui, it is more involved.\nSome include paths are hardcoded, and you need to add the include path for eigen, freeglut, anttweakbar, and matlab includes (D:\\MatlabR2018a\\extern\\include) to the Visual Studio project.\nI had to recompile freeglut in multithread instead of multithread dll (in the code generation settings) otherwise I had linker errors.\n\nThen, due to changes in the support of complex variables in Matlab 2018a, you need to change a couple of functions:\n- in matlab_utils.h line 335, replace \n    v.real() = Eigen::Map<const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> >(mxGetPr(m), dim[0], dim[1]);\n\n    if (mxIsComplex(m))\n        v.imag() = Eigen::Map<const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> >(mxGetPi(m), dim[0], dim[1]);\n    else\n        v.imag().setZero();\nby\n\tif (mxIsComplex(m)) {\n\t\t//v.imag() = Eigen::Map<const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> >(&((*pc).imag), dim[0], dim[1]);\n\t\tfor (int i = 0; i < dim[0] * dim[1]; i++) {\n\t\t\tv.data()[i].real(pc[i].real);\n\t\t\tv.data()[i].imag(pc[i].imag);\n\t\t}\n\t} \n\telse {\n\t\tfor (int i = 0; i < dim[0] * dim[1]; i++) {\n\t\t\tv.data()[i].real(pc[i].real);\n\t\t}\n\t\tv.imag().setZero();\n\t}\n\t\n- in matlab_utils.h line 353\n    MapMat(mxGetPr(m), dim[0], dim[1]) = vr;\n    MapMat(mxGetPi(m), dim[0], dim[1]) = vi;\n by\n mxComplexDouble *pc = mxGetComplexDoubles(m);\n\tfor (int i = 0; i < dim[0] * dim[1]; i++) {\n\t\tpc[i].real = vr[i];\n\t\tpc[i].imag = vi[i];\n\t}\n\t\nUltimately, the code runs and produce the expected results.",
        "Misc. comments": "",
        "Software language": "Matlab / Mathematica / .."
    }
]