2
\$\begingroup\$

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.

\$\endgroup\$
  • 2
    \$\begingroup\$ 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. \$\endgroup\$ – Steve H Mar 6 '11 at 22:21
  • \$\begingroup\$ 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? \$\endgroup\$ – Skoder Mar 6 '11 at 23:35
3
\$\begingroup\$
double ZAdjust = Math.Cos(XZAngle);
initVel.X = (float)(Math.Cos(XYAngle) * ZAdjust);
initVel.Y = (float)(Math.Sin(XYAngle) * ZAdjust);
initVel.Z = (float)Math.Sin(XZAngle);
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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