# How to calculate vector of projectile initial velocity

There are point A (origin) and point B (target). And also there is gravity vector G. I need compute initial velocity of projectile (throwing arc trajectory from point A to point B).

Also I need to control speed of projectile (Speed) and flexion of throwing arc.

How compute this?

• This is fairly complicated math, what should it be used for? Do you really have to know the initial force to hit the target exactly? If not then just cheat by trying out til you find homemade numbers that 'just works' Dec 13, 2016 at 9:16
• @Valmond I need to shoot from weapon (point A) with non-linear (arc) projectile directly to target (point B, considering the obstacles). Projectile spawned with specified initial velocity and gravity, but not moving to point B. I want correct trajectory by target. Dec 13, 2016 at 9:21

Assume your variables are: initial velocity $v_0 = (v_0_x, v_0_y, v_0_z)$, initial position $p_0 = (p_0_x, p_0_y, p_0_z)$, and target position $p_t = (p_t_x, p_t_y, p_t_z)$.

First, choose your initial y-velocity, and calculate the time it requires to reach its target on the y-axis using this equation:

$t = \frac{-v_0_y \pm \sqrt{v_0_y^{2} - 2(p_0_y - p_t_y)g}}{g}$

If you want the projectile to reach its target while it's ascending, choose the plus sign, otherwise, choose the minus sign. (Note that gravity, g, should be < 0).

Now you can calculate the initial x-velocity by using this equation:

$v_0_x = \frac{p_t_x - p_0_x}{t}$

Likewise, for the initial z-velocity:

$v_0_z = \frac{p_t_z - p_0_z}{t}$

You can modify the curve of the arc by changing the initial y-velocity.

• +1 Good one! I think I misunderstood the question, if I compare our answers. Dec 13, 2016 at 9:52
• media.giphy.com/media/l0MYuhmyKQYzYHY4g/source.gif But I got some calculation error between point B and actual point of arc collision. Whats wrong? Dec 13, 2016 at 13:08
• Can you please tell me what values you chose? Dec 14, 2016 at 8:54

Depending on how accurate you need to be and how much processing power you what to use for this, you could compute the position and speed of your projectile by using the semi-explicit euler:

Semi-explicit euler:

First calculate the new velocity:

• v(t + h, p(t)) = v(t, p(t)) - h*g

Than you calculate the new position:

• p(t + h) = p(t) + h*v(t + h, p(t))

Variables:

• v is velocity-vector
• t is your current time
• h is your timestep (e.g. 1 if you calculate every second)
• p(t) is the current position at time t
• In my context time is does not matter. I can't insert t to computations, I have only coords of start and end positions. Dec 13, 2016 at 9:43