Тебе готовый алгоритм нужен?
Врядли его тебе тут дадут.
У тебя есть позиция курсора над картинкой, исходя из этой позиции считаешь смещение (x, y) и задаешь transform translate(x,y) scale
Коефициенты прийдется подобрать експериментально
Точно так же меняешь translate во време движения курсора над каринкой. Судя по коду анимация на зум и на перемещение одна и таже