How does the logic behind adobe's puppet warp tool work? I'm curious as to how Adobe's puppet warp tool works. I know they have published papers on how the curavture tool works, but I haven't seen anything similar for the puppet warp tool. For those unfamiliar, you can grab a shape and perform natural-esqe transformations on the shape based on defined anchor points. 
Some simple transformations of a basic rectangle: 
At rest:

Bottom right handle dragged right 200px

Reset back to original, then a top right anchor added, and dragged to the middle on the X axis:

It's beyond me how this logic is implemented. Does anyone have any ideas?
 A: Well, I assume that Adobe PS Puppet Warp tool is most likely some adaptation of As-Rigid-As-Possible warping algorithm presented in following papers:
@article{journals/jgtools/IgarashiI09,
    author = {Igarashi, Takeo and Igarashi, Yuki},
    ee = {http://dx.doi.org/10.1080/2151237X.2009.10129273},
    journal = {J. Graphics, GPU, & Game Tools},
    number = 1,
    pages = {17-30},
    title = {Implementing As-Rigid-As-Possible Shape Manipulation and Surface Flattening.},
    url = {http://dblp.uni-trier.de/db/journals/jgtools/jgtools14.html#IgarashiI09},
    volume = 14,
    year = 2009
}

or
@article{10.1145/1073204.1073323,
    author = {Igarashi, Takeo and Moscovich, Tomer and Hughes, John F.},
    title = {As-Rigid-as-Possible Shape Manipulation},
    year = {2005},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {24},
    number = {3},
    doi = {10.1145/1073204.1073323},
    journal = {ACM Trans. Graph.},
    month = {jul},
    pages = {1134–1141},
    numpages = {8}
}

