将对象移向javascript中的某个点

waz*_*day 6 javascript math

我为此挣扎着数学,我需要将一个物体均匀地移向一个点.我有一个点在x:500 y:250和一个0,0的对象.如果移动速度为'1',我将如何解决这个问题,我需要以x:0.666和y:0.333的速度移动.y速度是x速度的一半.我确定我在这里只是一个绝对的白痴.

Kev*_*vin 9

首先,使用atan2确定逼近角度.

dx = 500 - 0;
dy = 250 - 0;
angle = atan2(dy, dx)
Run Code Online (Sandbox Code Playgroud)

使用该角度,您可以将速度分解为x和y分量.

xVelocity = velocity * cos(angle);
yVelocity = velocity * sin(angle);
Run Code Online (Sandbox Code Playgroud)

对于您的示例问题,这将使xVelocity等于0.8944并且yVelocity等于0.4472,这看起来是正确的.(你的初始猜测0.666和0.333不准确,从那以后你的总移动速度将是0.745.)


Jac*_*ack 5

首先计算源点和目标点之间的增量:

var dx = destX - srcX;
var dy = destY - srcY;
Run Code Online (Sandbox Code Playgroud)

然后用atan2函数计算两点之间的角度:

var angle = Math.atan(dy, dx);
Run Code Online (Sandbox Code Playgroud)

既然你有角度,你可以通过幅度(1)和角度计算速度矢量:

var magnitude = 1.0;
var velX = Math.cos(angle) * magnitude;
var velY = Math.sin(angle) * magnitude;
Run Code Online (Sandbox Code Playgroud)

不要将幅度与矢量的分量之和混淆,公式v.x + v.y = 1.0不正确,因为幅度是平方分量之和的平方根,因此正确的公式将是Math.sqrt(v.x*v.x + v.y*y.y) = 1