Tak si z těch úhlů spočítáš nějaký bod na přímce pohledu a ten UP vektor. Vždyť se goniometrické funkce (sinus, kosinus) učí snad už někdy na základní škole.
Takže když máš třeba toto:
Připojen obrázek.
Zelená - angleLR (natočení pohledu kolem osy Y, vlevo-vpravo)
Modrá - angleUD (natočení kolem X, nahoru-dolu)
Červená - angleCT (natočení kolem Z, rotace kamery)
Tak to bude nějak takhle:
GLdouble eX = x
GLdouble eY = y;
GLdouble eZ = z;
double vLRx = cos(DEG2RAD(angleLR)), vLRy = 0, vLRz = sin(DEG2RAD(angleLR));
double vUDx = 0, vUDy = sin(DEG2RAD(angleUD)), vUDz = cos(DEG2RAD(angleUD));
double vCTx = cos(DEG2RAD(angleCT)), vCTy = sin(DEG2RAD(angleCT)), vCTz = 0;
double vx = vLRx + vUDx, vy = vLRy + vUDy, vz = vLRz + vUDz;
GLdouble cX = eX + vx * 100.0;
GLdouble cY = eY + vy * 100.0;
GLdouble cZ = eZ + vz * 100.0;
gluLookAt(eX, eY, eZ, cX, cY, cZ, vCTx, vCTy, vCTz);
Nejspíš tam bude něco blbě, nechce se mi nad tím přemýšlet.