Сначала - я не знаю фактический алгоритм, который они используют здесь.
Однако, я бы атаковал это, создав сетку точек (скажем, 10х10), каждая точка прикреплена к соседям с помощью демпфирующих пружин. Возможно, стоит также привязать края / угловые точки к экрану с помощью пружин.
Деформируя сетку (растягивая и сжимая пружины), а затем моделируя отклики пружин, вы получите некоторые интересные эффекты, подобные показанным. После этого вы сможете записать шаблоны, чтобы точки могли следовать предварительно вычисленному пути для более быстрой анимации, если ваша анимация предсказуема.
Затем вам нужно разобраться, как разделить изображение и отобразить его на сетке. Разделение может лучше сделать один раз на сервере, но клиент может сделать это, если вы используете canvas.
Возможны svg & vml - они будут работать без плагинов и достаточно схожи для кода, но я не думаю, что вы получите достаточно правильную деформацию изображения. Однако вы можете безнаказанно масштабировать и вращать (и быстро), поэтому, если вы просто привязываете 2 изображения ячейки к сетке, а не ко всем 4, вы получите интересную анимацию - не совсем как видео, но довольно хорошо.
Что касается моделирования демпфирующих пружин, вам необходимо отслеживать массу каждой точки (насколько она тяжелая), сколько силы пружина оказывает на каждую точку (скаляр от того, насколько она сжата / растянута). и это вектор) и демпфирующая сила на точках (сила сопротивления квадрату скорости точки).
Конечно, это физическое моделирование, но вполне возможно.
Ответ вполне может быть медленным. Особенно на IE. Canvas нуждается в подключаемом модуле для IE, поэтому, если вы используете canvas, IE folk его не увидит. SVG работает практически на всем, кроме IE, но у него есть VML, который похож. http://raphaeljs.com/ - это библиотека, которая использует все, что доступно. Это будет вызов для настройки:)
Как бы вы ни делали, в chrome он всегда будет выглядеть лучше, движок javascript V8 превосходит все остальное для такой работы. IE имеет самый медленный движок JavaScript.