A cada passo, as próximas posições x e y são calculadas de acordo com o ângulo do objeto da seguinte forma: x = x + (passo * sin(angulo)) y = y - (passo * cos(angulo)) note que o eixo y na matemática aponta para cima, mas no seu monitor ele aponta para baixo, por isso o sinal de menos para o y. note, também, que o angulo é em radianos, se você prefere em graus deve usar a seguinte formula: angulo = angulo_em_graus * (PI / 180); exemplo: https://jsfiddle.net/ds2gqp5u/