Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

A velocity encompasses both speed and direction in a single vector. I'm a little bit confused about how to separate the two.

I have 2 creatures. The first is located at position (x1, y1). The second is located at (x2, y2).

I would like the first creature to move towards the second creature, so I get the vector from creature1 to creature2 as so:

velocity = (x2 - x1, y2 - y1)

Then I normalize the vector using the distance between the 2 points like so:

velocity.x = velocity.x / distance;
velocity.y = velocity.y / distance;

If I use this as my velocity, the creature will move in the correct direction but it will be moving too fast. How can I control the speed of the creature without changing the direction? I would like for creature1 to move in the direction of creature2 at a constant speed which I choose.

share|cite|improve this question
The speed is the norm (length) of the velocity vector. – David Mitra May 7 '12 at 19:03
To increase or decrease the speed, multiply each component of the velocity by a positive number $a$. You'll reduce the speed for $0<a<1$ and increase the speed for $a>1$. – David Mitra May 7 '12 at 19:12
Thanks, David. That information combined with a typo fix solved my issue. – Jrz May 7 '12 at 19:20
up vote 0 down vote accepted

What you have written is not strictly speaking the velocity vector, but rather the displacement vector: $d=(x_2-x_1, y_2-y_2)$. If you normalize this, though, you'll get a unit vector in the same direction as the velocity vector:

$\ \ \ v=(v_1,v_2 )$ where $v_1={x_2-x_1\over\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} }$ and $v_2={y_2-y_1\over\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} }$.

You can impose any speed you wish by multiplying $v$ by a positive constant: $v_a=(av_1,av_2)$ will still have the direction of $v$, but the speed now is $a$.

share|cite|improve this answer

In one dimension, the average velocity as an idealized object (or idealized reference point on an object) moves from $x_1$ to $x_2$ between timepoints $t_1$ and $t_2$ is $$ v=\frac{\Delta x}{\Delta t}=\frac{x_2-x_1}{t_2-t_1} \,. $$ You just need to generalize this to two dimensions: $$ v=\frac{\sqrt{\Delta x^2+\Delta y^2}}{\Delta t} =\frac{\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}}{t_2-t_1} $$ As a vector, you could write $$\vec{x_1}=(x_1,y_1)$$ $$\vec{x_2}=(x_2,y_2)$$ $$\vec{\Delta x}=\vec{x_2}-\vec{x_1}=(x_2-x_1,y_2-y_1)$$ and the average velocity vector would be the componentwise one-dimensional formula we started with above: $$ \vec{v}=\frac{\vec{\Delta x}}{\Delta t} =\left(\frac{\Delta x}{\Delta t},\frac{\Delta y}{\Delta t}\right) $$ The average speed would be the norm of this vector: $$ |\vec{v}|=\frac{|\vec{\Delta x}|}{|\Delta t|} =\left|\left(\frac{\Delta x}{\Delta t},\frac{\Delta y}{\Delta t}\right)\right| =\sqrt{ \left(\frac{\Delta x}{\Delta t}\right)^2 +\left(\frac{\Delta x}{\Delta t}\right)^2} =\frac{\sqrt{\Delta x^2+\Delta y^2}}{|\Delta t|} $$

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.