# Calculate the initial velocity of a 3D trajectory

I've got a 2D projectile code sample working, but would like to extend it to 3D. How would I calculate the initial velocity of the Z-axis? At the moment, I've got:

initVel.X = (float)Math.Cos(45.0);
initVel.Y = (float)Math.Sin(45.0);


How would I convert this to work in 3D, and add the initial velocity for the Z-axis?

In my example, X is across, Y is up down and Z is going into the screen. I also normalize the vector and multiply it by the speed.

• Although you have a trigonometric answer below, if you intend to dive deeper into 3d, you might want to consider trading in the trigonometric approach to 3d problem solving in favor of a linear algebra approach... Much less headache and much more versatile in the long run. – Steve H Mar 6 '11 at 22:21
• Thanks for the suggestion. I'm using vectors to perform the motions, but since I only need to call this very few times, I figured it would suffice. To clarify, by a linear algebra approach, do you mean using Matrices and Quaternions? – Skoder Mar 6 '11 at 23:35

double ZAdjust = Math.Cos(XZAngle);