I’m trying to get a set of normalized vectors ( forward, right, up ) from the current camera angles ( yaw, pitch, roll ) and am having some problems. I found some code to do this in the Quake I source code, but it doesn’t quite seem to work because the Y and Z axis are swapped in Quake ( Z is up ) relative to how they would be in OpenGL ( Y is up ) My math skills aren’t great, so perhaps the solution is easy??

Here’s the Quake code if that will help:

void AngleVectors( vec3_t ang, vec3_t fwd, vec3_t right, vec3_t up) {

float angle;

float sr, sp, sy, cr, cp, cy;

angle = ang[YAW] * (M_PI*2/360);
sy = sin(angle);
cy = cos(angle);
angle = ang[PITCH] * (M_PI*2/360);

sp = sin(angle);

cp = cos(angle);

angle = ang[ROLL] * (M_PI*2/360);

sr = sin(angle);

cr = cos(angle);

if( fwd ) {

forward[0] = cp*cy;
forward[1] = cp*sy;

forward[2] = -sp;

}

if( right ) {

right[0] = (-1

*sr*sp

*cy±1*cr*-sy);

right[1] = (-1

*sr*sp

*sy±1*cr

*cy);*

right[2] = -1sr

right[2] = -1

*cp;*

}

if( up ) {

up[0] = (crsp

}

if( up ) {

up[0] = (cr

*cy±sr*-sy);

up[1] = (cr

*sp*sy±sr

*cy);*

up[2] = crcp;

up[2] = cr

}

}

Thanks in advance.