Hi,
you can also achieve it without trigronometry

Code:
VECTOR vtemp;
...
vec_set ( vtemp, vector ( kwy_w - key_s, key_d - key_a, 0 );
vec_rotate ( vtemp, camera.pan );
vec_normalize ( vtemp, Speed * time_step );
vec_add ( camera.x, vtemp );



Salud!