Maybe this helps in some way. I wrote it for the Ackmania isometric camera.
The main reason was to make sure the distance doesn't change with different screen resolution (width being the master), but there is also an additional distance calculation, so the camera can move further away depending on the speed of the object in focus.
I use some reference screen width and arc to calculate a default width (vViewWidth). For further calculation I can always refer to this default width. The calculation looks a bit strange (no, I haven't researched why the formula has to look like this), but basically it's just jcl's formula from the manual, rearranged so I can calculate what I need without taking assumptions or try and error.

Code:
#define CAMERA_DIST 2000
#define CAMERA_PAN 45
#define CAMERA_TILT -25
#define CAMERA_SPEEDFAC 0.015
#define CAMERA_REFSCRSIZEX 1920
#define CAMERA_REFARC 60

void create_camera(int layer)
{
	cam = view_create(layer);
	cam->pan = CAMERA_PAN;
	cam->tilt = CAMERA_TILT; 
	cam->flags |= ISOMETRIC;

	/* width = view.size_x * 2 * tan(view.arc/2); - from manual (view.arc) */
	vViewWidth = CAMERA_REFSCRSIZEX * 2 * tanv(CAMERA_REFARC * 0.5);
}

void update_camera()
{
	VECTOR vecPos;
	
	if (camera_focus_ent != NULL)
	{
		vec_set(vecPos, vector(-CAMERA_DIST, 0, 0));
		vec_rotate(vecPos, cam->pan);
		vec_add(vecPos, vector(camera_focus_ent->x, camera_focus_ent->y, 0));
		vec_set(cam->x, vecPos);

		vDistanceFactor += ((is_kart_accelerating(camera_focus_ent) > 0) * 0.05 - 0.02) * time_step;
		vDistanceFactor = clamp(abs(vDistanceFactor), 0.28, 0.6);

		/* view.arc = 2*atan(width/(view.size_x * 2)); - from manual (view.arc) */
		/* change camera arc by manipulating view size - delivers resolution independent result */
		cam->arc = 2 * atanv(vViewWidth * 0.5 / (screen_size.x / vDistanceFactor));
	}
	
}



The first part is only a follow-object implementation, but the vDistanceFactor stuff and the calculation might help.