--- ray/src/util/glrad.c 2004/03/26 23:34:23 3.19 +++ ray/src/util/glrad.c 2016/03/21 19:06:08 3.23 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: glrad.c,v 3.19 2004/03/26 23:34:23 schorsch Exp $"; +static const char RCSid[] = "$Id: glrad.c,v 3.23 2016/03/21 19:06:08 greg Exp $"; #endif /* * Program to display Radiance scene using OpenGL. @@ -281,7 +281,7 @@ runrad( /* run rad and load variables */ eyedist = atof(cp); /* look for materials */ while ((cp = scan4var(buf, sizeof(buf), "materials", fp)) != NULL) { - nscenef += wordstring(scene+nscenef, cp); + nscenef += wordstring(scene+nscenef, MAXSCENE-nscenef, cp); buf[0] = '\0'; } /* look for octree */ @@ -289,7 +289,7 @@ runrad( /* run rad and load variables */ octree = savqstr(cp); /* look for scene files */ while ((cp = scan4var(buf, sizeof(buf), "scene", fp)) != NULL) { - nscenef += wordstring(scene+nscenef, cp); + nscenef += wordstring(scene+nscenef, MAXSCENE-nscenef, cp); buf[0] = '\0'; } /* load view names */ @@ -449,8 +449,8 @@ dev_open( /* initialize GLX driver */ /* set window manager hints */ ourxwmhints.flags = InputHint|IconPixmapHint; ourxwmhints.input = True; - ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay, - gwind, glradicon_bits, glradicon_width, glradicon_height); + ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay, gwind, + (char *)glradicon_bits, glradicon_width, glradicon_height); XSetWMHints(ourdisplay, gwind, &ourxwmhints); /* set GLX context */ glXMakeCurrent(ourdisplay, gwind, gctx); @@ -646,12 +646,11 @@ moveview( /* move our view */ VSUM(nv.vp, wp, 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, wp, 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); @@ -673,7 +672,7 @@ waitabit(void) /* pause a moment */ { struct timespec ts; ts.tv_sec = 0; - ts.tv_nsec = 5000000; + ts.tv_nsec = 50000000; nanosleep(&ts, NULL); }