--- ray/src/hd/rhd_glx1.c 2011/05/20 02:06:39 3.7 +++ ray/src/hd/rhd_glx1.c 2016/04/28 16:28:20 3.9 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rhd_glx1.c,v 3.7 2011/05/20 02:06:39 greg Exp $"; +static const char RCSid[] = "$Id: rhd_glx1.c,v 3.9 2016/04/28 16:28:20 greg Exp $"; #endif /* * OpenGL GLX driver for holodeck display. @@ -465,7 +465,14 @@ getevent(void) /* get next event */ getkey(levptr(XKeyPressedEvent)); break; case ButtonPress: - getmove(levptr(XButtonPressedEvent)); + switch (levptr(XButtonPressedEvent)->button) { + case Button4: /* wheel up */ + case Button5: /* wheel down */ + break; + default: + getmove(levptr(XButtonPressedEvent)); + break; + } break; } } @@ -556,12 +563,11 @@ moveview( /* move our view */ VSUM(nv.vp, qtL.wp[li], odir, -1.); spinvector(nv.vdir, nv.vdir, nv.vup, d); } else if (orb) { /* orbit up/down */ - fcross(v1, odir, nv.vup); - if (normalize(v1) == 0.) + if (geodesic(odir, odir, nv.vup, + d=MOVDEG*PI/180.*orb, GEOD_RAD) == 0.0) return(0); - spinvector(odir, odir, v1, d=MOVDEG*PI/180.*orb); VSUM(nv.vp, qtL.wp[li], odir, -1.); - spinvector(nv.vdir, nv.vdir, v1, d); + geodesic(nv.vdir, nv.vdir, nv.vup, d, GEOD_RAD); } else if (mov) { /* move forward/backward */ d = MOVPCT/100. * mov; VSUM(nv.vp, nv.vp, odir, d);