По задумке, красный шар должен лететь по заданному вектору и попасть в зеленый круг. Но он бесстыдно косит, по чуть-чуть при любом векторе. В чем ошибка?

Код AS3:
var r:Number = 150;
var angle:Number = 0;
var vx:Number = 1;
var vy:Number = 0.5;
var px:Number = 0;
var py:Number = 0;
addEventListener(Event.ENTER_FRAME, update);
function update(e:Event):void {
ball_mc.x += vx;
ball_mc.y += vy;
// Точка, в которую летит шар
angle = Math.atan2(vy, vx);
px = circle_mc.x + r * Math.cos(angle);
py = circle_mc.y + r * Math.sin(angle);
point_mc.x = px;
point_mc.y = py;
}