2
\$\begingroup\$

I am attempting to cast a ray from the center of the screen and check for collisions with objects.

When rendering, I use these calls to set up the camera:

GL11.glRotated(mPitch, 1, 0, 0);
GL11.glRotated(mYaw, 0, 1, 0);
GL11.glTranslated(mPositionX, mPositionY, mPositionZ);

I am having trouble creating the ray, however. This is the code I have so far:

ray.origin = new Vector(mPositionX, mPositionY, mPositionZ);
ray.direction = new Vector(?, ?, ?);

My question is: what should I put in the question mark spots? I.e. how can I create the ray direction from the pitch and roll?

Any help would be much appreciated!

\$\endgroup\$
2
\$\begingroup\$

You can treat this as a conversion from spherical coordinates to Cartesian coordinates.

Assuming the ray should have some length r, your x, y, and z components can be calculated like this:

x = r * sin(mPitch) * cos(mYaw)
y = r * sin(mPitch) * sin(mYaw)
z = r * cos(mPitch)
| improve this answer | |
\$\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.