After stepping away from the keyboard for a few hours, the thought occurred to me that part of the problem is that my trace should be relative to where my player is looking, which means it should be more camera-centric than player-centric. So, after playing a bit I came up with this:
Code:
vec_set(vTrace.x,vector(1000,0,0)); // 1000 units forward
vec_rotate(vTrace,vector(my.pan,camera.tilt,0)); // same pan as player (seems more accurate than camera) and same tilt as camera.
vec_add(vTrace, camera.x);
c_trace(camera.x, vTrace.x, IGNORE_ME | IGNORE_MAPS | ACTIVATE_SONAR );
I kept the vec_rotate line the same except I added the "camera.tilt" to the vector() arguments. (When I tried "vec_rotate(vTrace,my.pan);" it still didn't work quite right).
I changed the vec_add() and the c_trace() lines to use camera.x instead of player.x