по моему так нужно
запоминаем старые координаты xold yold
получаем новые x y
то есть расстояние будет x-xold y-yold
и дальше плавно его проходим за сколько то итераций допустим 10
for(var i=0;i<10;i++)render(i);
function render(i){
ctx.clearRect(w,h);//очищаем canvas
ctx.drawImage(image,xold+(x-xold)/10*i,yold+(y-yold)/10*i)
}