void keyboard (unsigned char key, int x, int y) { switch (key) { case 's': /* s key rotates at shoulder */ shoulder = (shoulder + 5) % 360; glutPostRedisplay(); break; case '1': if (upper_arm1 < 50){ upper_arm1 = (upper_arm1 + 5) % 360; glutPostRedisplay(); } break; case 'S': shoulder = (shoulder - 5) % 360; glutPostRedisplay(); break; case 'e': /* e key rotates at elbow */ elbow = (elbow + 5) % 360; glutPostRedisplay(); break; case 'E': elbow = (elbow - 5) % 360; glutPostRedisplay(); break; case 'd': theta = theta + 10; newViewpoint(); break; case 'a': theta = theta - 10; newViewpoint(); break; case 'w': if (phi + 10 < 90){ phi = phi + 10; newViewpoint(); } break; case 'z': if (phi - 10 > -90){ phi = phi - 10; newViewpoint(); } break; default: break; } }
/** * Draw this object from this point of view, and return * the resulting image. * The output CkView will be unref()'d exactly once after * each call to render. */ CkView *CkInterestViewable::renderView(const CkViewpoint &univ2screen) { CkViewpoint univ2texture; priorityAdjust=0; /* no priority */ if (!newViewpoint(univ2screen,univ2texture)) return NULL; CkInterestView *ret=new CkInterestView( univ2texture.getWidth(),univ2texture.getHeight(),4, interest,univ2texture); renderImage(univ2texture,ret->getImage()); return ret; }