--- ray/src/hd/rhdisp.c 2004/01/01 11:21:55 3.50 +++ ray/src/hd/rhdisp.c 2008/03/11 02:21:47 3.52 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rhdisp.c,v 3.50 2004/01/01 11:21:55 schorsch Exp $"; +static const char RCSid[] = "$Id: rhdisp.c,v 3.52 2008/03/11 02:21:47 greg Exp $"; #endif /* * Holodeck display process. @@ -325,7 +325,7 @@ again: return; } *v = *(viewhist + ((nhist-1)%VIEWHISTLEN)); - goto again; /* poss. overloading dev_section()? */ + goto again; /* XXX overloading dev_section()? */ } DCHECK(*slist < 0, WARNING, "no visible sections in new_view"); for ( ; *slist >= 0; slist++) @@ -381,6 +381,18 @@ set_focus( /* set focus frame */ case VT_ANG: vwfocus.horiz = hsiz * odev.v.horiz; vwfocus.vert = vsiz * odev.v.vert; + break; + case VT_PLS: + vwfocus.horiz = hsiz * sin((PI/180./2.)*odev.v.horiz) / + (1.0 + cos((PI/180./2.)*odev.v.horiz)); + vwfocus.horiz *= vwfocus.horiz; + vwfocus.horiz = (2.*180./PI)*acos((1. - vwfocus.horiz) / + (1. + vwfocus.horiz)); + vwfocus.vert = vsiz * sin((PI/180./2.)*odev.v.vert) / + (1.0 + cos((PI/180./2.)*odev.v.vert)); + vwfocus.vert *= vwfocus.vert; + vwfocus.vert = (2.*180./PI)*acos((1. - vwfocus.vert) / + (1. + vwfocus.vert)); break; case VT_HEM: vwfocus.horiz = 2.*180./PI*asin(