@ don pedro
I tested you original camera function. I found it very nice the way it was first proposed.
there is not need to do anything to it. In fact what I proposed is totally incorrect.

this is the function I tested
Code:
  
starter move_camera()
{
camera.arc=72;
camera.clip_near=20;
camera.clip_far=24000;

var cam_ang[3];
var cam_dist=500;
cam_ang.pan=180;
cam_ang.tilt=30;
cam_ang.roll=0;
while(!p_vehicle){wait(1);}

while(1)
{
camera.x = p_vehicle.x - 350 * cos(p_vehicle.pan);
camera.y = p_vehicle.y - 350 * sin(p_vehicle.pan);
camera.z = p_vehicle.z + 100;
camera.pan = p_vehicle.pan;
camera.tilt = -10;
wait(1);
}
}



Newton