void AABB::draw_mesh() { glColor3d(color[0],color[1],color[2]); Vector3d n; glPushMatrix(); glTranslated(-center[0], -center[1], -center[2]); Matrix4d R(q_now); Matrix4d RT = R.transpose(); glMultMatrixd(RT.ptr()); glScaled(zoom_val,zoom_val,zoom_val); glBegin(GL_TRIANGLES); for(unsigned int j=0;j<p.size();++j) { glVertex3dv(p[j].ptr()); } glEnd(); glPopMatrix(); glColor3d(color[0],color[1],color[2]); Vector3d u=q_now*p[0]*zoom_val-center, v=q_now*p[1]*zoom_val-center, w=q_now*p[2]*zoom_val-center; glBegin(GL_TRIANGLES); glVertex3dv(u.ptr()); glVertex3dv(v.ptr()); glVertex3dv(w.ptr()); glEnd(); }
void CGView::paintGL() { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-2); Matrix4d R(q_now); Matrix4d RT = R.transpose(); glMultMatrixd(RT.ptr()); glScaled(zoom,zoom,zoom); glTranslated(-center[0],-center[1],-center[2]); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); drawMesh(); }
void OBB::draw(){ glPushMatrix(); glTranslated(-center[0], -center[1], -center[2]); Matrix4d R(q_now); Matrix4d RT = R.transpose(); glMultMatrixd(RT.ptr()); glScaled(zoom_val,zoom_val,zoom_val); glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); //glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); glDisable(GL_LIGHTING); //glColor4d(color.x(),color.y(),color.z(),0.2); glColor3d(0,0,0); glPointSize(25); glBegin(GL_POINTS); glVertex3d(0,0,0); Matrix4d m=this->R.transpose(); for (int i = 0; i < 3; ++i) { Vector3d c=0; c[i]=1; c=m*c; c=c/c.length()/16; glVertex3dv(c.ptr()); } glEnd(); glBegin(GL_QUAD_STRIP); for(unsigned int i=0; i<corner.size();i++){ glVertex3dv(corner[i].ptr()); } glVertex3dv(corner[0].ptr()); glVertex3dv(corner[1].ptr()); glEnd(); glEnable(GL_LIGHTING); glPopMatrix(); }
void CGView::paintGL() { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslated(-g_center[0],-g_center[1],-g_center[2]); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); Matrix4d R(q_now); Matrix4d RT = R.transpose(); glMultMatrixd(RT.ptr()); glScaled(zoom,zoom,zoom); if (bbox_on) drawBoundingBox(); GLUquadricObj *quadric; quadric = gluNewQuadric(); glDisable (GL_CULL_FACE); if(!(show_circle&&max4Points)){ for(unsigned int i=0;i<point.size();i++) { if (i == picked) glColor3d(1.0,0.0,0.0); else glColor3d(1.0,1.0,0.0); glPushMatrix(); glTranslated(point[i][0],point[i][1],point[i][2]); //glutSolidSphere(0.03,10,10); gluQuadricDrawStyle(quadric, GLU_FILL); gluSphere( quadric , .03 , 10 , 10); glPopMatrix(); } } else{ for(int i=0;i<=pointCount;i++) { if (i == picked) glColor3d(1.0,0.0,0.0); else glColor3d(1.0,1.0,0.0); glPushMatrix(); glTranslated(point[i][0],point[i][1],point[i][2]); gluQuadricDrawStyle(quadric, GLU_FILL); gluSphere( quadric , .03 , 10 , 10); glPopMatrix(); } } if (show_circle){ if(max4Points) setSES(); else SES = Sphere::com (point); /* glColor3d(0.0,1.0,1.0); glPushMatrix(); glTranslated(SES.center.x(), SES.center.y(), SES.center.z()); gluQuadricDrawStyle(quadric, GLU_FILL); gluSphere( quadric , .03 , 10 , 10); glPopMatrix(); if(pointCount==2){ glColor3d(0.0,0.0,0.0); glPushMatrix(); glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); glBegin(GL_TRIANGLES); glVertex3dv(point[0].ptr()); glVertex3dv(point[1].ptr()); glVertex3dv(point[2].ptr()); glEnd(); glPopMatrix(); }*/ glEnable(GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_CULL_FACE); glColor4d(0.0,0.0,1.0,0.5); glCullFace (GL_BACK); glPushMatrix(); glTranslated(SES.center.x(), SES.center.y(), SES.center.z()); gluQuadricDrawStyle(quadric, GLU_FILL); gluSphere( quadric , SES.radius , 40 , 40); //glutSolidSphere(SES.radius,40,40); glPopMatrix(); } }