/*! * Create camera and light icons */ static void create_icons() { GLUquadricObj *qobj; #define CBX .25 // camera body dimensions #define CBY 1.5 #define CBZ 1. qobj = gluNewQuadric(); gluQuadricDrawStyle(qobj, GLU_FILL); gluQuadricNormals(qobj, GLU_SMOOTH); cameraList = glGenLists(1); glNewList(cameraList, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, dgrey); glMaterialfv(GL_FRONT, GL_DIFFUSE, lgrey); glMaterialfv(GL_FRONT, GL_SPECULAR, black); glEnable(GL_CULL_FACE); solidBox(CBX, CBY, CBZ); glPushMatrix(); glTranslatef(0., .9, 1.8); glRotatef(90., 0., 1., 0.); solidCylinder(1., CBX*2, 12); glTranslatef(0., -1.8, 0.); solidCylinder(1., CBX*2, 12); glPopMatrix(); glDisable(GL_CULL_FACE); glPushMatrix(); glTranslated(0., CBY, 0.); glRotated(-90., 1., 0., 0.); gluCylinder(qobj, .2, .5, 1., 12, 1); glPopMatrix(); glEndList(); lightList = glGenLists(1); glNewList(lightList, GL_COMPILE); glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT, dgrey); glMaterialfv(GL_FRONT, GL_DIFFUSE, dgrey); glMaterialfv(GL_FRONT, GL_SPECULAR, grey); glEnable(GL_CULL_FACE); gluSphere(qobj, .5, 12., 6.); glRotated(180., 1., 0., 0.); glMaterialfv(GL_FRONT, GL_EMISSION, dgrey); gluCylinder(qobj, .2, .2, 1., 12, 1); glPopMatrix(); glEndList(); }
void setWidget() { clearPrimitives(); GLuint id1 = glGenLists(1); glNewList(id1, GL_COMPILE); glutSolidSphere(1.2, 20, 20); glEndList(); GLuint id2 = glGenLists(1); glNewList(id2, GL_COMPILE); glutSolidCube(1.8); glEndList(); GLuint id3 = glGenLists(1); glNewList(id3, GL_COMPILE); glPushMatrix(); glTranslatef(0.0f, 0.0f, -1.25f); solidCylinder(0.6, 2.5, 20, 20); glPopMatrix(); glEndList(); GLuint id4 = glGenLists(1); glNewList(id4, GL_COMPILE); glPushMatrix(); glRotatef(90.0f, 0.0f, 1.0f, 0.0f); glTranslatef(0.0f, 0.0f, -1.25f); solidCylinder(0.6, 2.5, 20, 20); glPopMatrix(); glEndList(); GLuint id5 = glGenLists(1); glNewList(id5, GL_COMPILE); glPushMatrix(); glRotatef(90.0f, 1.0f, 0.0f, 0.0f); glTranslatef(0.0f, 0.0f, -1.25f); solidCylinder(0.6, 2.5, 20, 20); glPopMatrix(); glEndList(); primitives.push_back(new OpenCSG::DisplayListPrimitive(id1, OpenCSG::Intersection, 1)); primitives.push_back(new OpenCSG::DisplayListPrimitive(id2, OpenCSG::Intersection, 1)); primitives.push_back(new OpenCSG::DisplayListPrimitive(id3, OpenCSG::Subtraction, 1)); primitives.push_back(new OpenCSG::DisplayListPrimitive(id4, OpenCSG::Subtraction, 1)); primitives.push_back(new OpenCSG::DisplayListPrimitive(id5, OpenCSG::Subtraction, 1)); }
void setConcave() { clearPrimitives(); GLuint id1 = glGenLists(1); glNewList(id1, GL_COMPILE); glutSolidTorus(0.6, 1.0, 25, 25); glEndList(); primitives.push_back(new OpenCSG::DisplayListPrimitive(id1, OpenCSG::Intersection, 2)); for (unsigned int i=0; i<4; ++i) { GLuint id = glGenLists(1); glNewList(id, GL_COMPILE); glPushMatrix(); glRotatef(90.0f, 0.0f, 1.0f, 0.0f); glRotatef(i*90.0f + 45.0f, 1.0f, 0.0f, 0.0f); glTranslatef(0.0f, 1.0f, 0.0f); glutSolidTorus(0.3, 0.6, 15, 15); glPopMatrix(); glEndList(); primitives.push_back(new OpenCSG::DisplayListPrimitive(id, OpenCSG::Subtraction, 2)); } GLuint id3 = glGenLists(1); glNewList(id3, GL_COMPILE); glPushMatrix(); glRotatef(90.0f, 0.0f, 1.0f, 0.0f); glTranslatef(0.0f, 0.0f, -1.65f); solidCylinder(0.3, 3.3, 20, 20); glPopMatrix(); glEndList(); primitives.push_back(new OpenCSG::DisplayListPrimitive(id3, OpenCSG::Subtraction, 1)); GLuint id4 = glGenLists(1); glNewList(id4, GL_COMPILE); glPushMatrix(); glRotatef(90.0f, 1.0f, 0.0f, 0.0f); glTranslatef(0.0f, 0.0f, -1.65f); solidCylinder(0.3, 3.3, 20, 20); glPopMatrix(); glEndList(); primitives.push_back(new OpenCSG::DisplayListPrimitive(id4, OpenCSG::Subtraction, 1)); }