...
vec_for_vertex(pos_front,...); // starting position of the laser
vec_for_vertex(pos_back,...); // a vertex behind it but on the line of the laser
vec_set(temp,pos_front);
vec_sub(temp,pos_back);
// now temp is the difference and thus direction from pos_back to pos_front
// we now normalize it to a specific length
vec_normalize(temp,10000);
// now we add the pos_front vector to it to get the end vector
vec_add(temp,pos_front);
// now you trace from pos_front to temp
c_trace(pos_front,temp,IGNORE_PASSABLE);
...