void Gl1_ChainedCylinder::go(const shared_ptr<Shape>& cm, const shared_ptr<State>& state,bool wire2, const GLViewInfo&) { Real r=(static_cast<ChainedCylinder*>(cm.get()))->radius; Real length=(static_cast<ChainedCylinder*>(cm.get()))->length; Quaternionr shift;// = (static_cast<ChainedCylinder*>(cm.get()))->chainedOrientation; shift.setFromTwoVectors(Vector3r::UnitZ(),state->ori.conjugate()*(static_cast<ChainedCylinder*>(cm.get()))->segment); glColor3v(cm->color); if(glutNormalize) glPushAttrib(GL_NORMALIZE); if (wire || wire2) drawCylinder(true, r,length,shift); else drawCylinder(false, r,length,shift); if(glutNormalize) glPopAttrib(); return; }
void Gl1_GridConnection::go(const shared_ptr<Shape>& cm, const shared_ptr<State>& st ,bool wire2, const GLViewInfo&) { GridConnection *GC=static_cast<GridConnection*>(cm.get()); Real r=GC->radius; Real length=GC->getLength(); Vector3r segt = GC->node2->state->pos - GC->node1->state->pos; //glMaterialv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Vector3f(cm->color[0],cm->color[1],cm->color[2])); const shared_ptr<Interaction> intr = scene->interactions->find((int)GC->node1->getId(),(int)GC->node2->getId()); glColor3v(cm->color); if(glutNormalize) glPushAttrib(GL_NORMALIZE); // glPushMatrix(); Quaternionr shift; shift.setFromTwoVectors(Vector3r::UnitZ(),segt); if(intr){drawCylinder(wire || wire2, r,length,shift);} if(glutNormalize) glPopAttrib(); // glPopMatrix(); return; }