VueOpenGLWidget::VueOpenGLWidget( ConteneurObjetGraphique * inObjetsGraphiques, QWidget * inParent ) : QGLWidget( QGLFormat( QGL::SampleBuffers ), inParent ), objetsGraphiques_( inObjetsGraphiques ) { connect( &openGLCamera_, SIGNAL( miseAJour() ), this, SLOT( update() ) ); connect( &openGLRotation_, SIGNAL( miseAJour() ), this, SLOT( update() ) ); connect( &openGLLumiere_, SIGNAL( miseAJour() ), this, SLOT( update() ) ); }
void OpenGLCamera::setPremierPlan( double inPremierPlan ) { if ( premierPlan_ != inPremierPlan ) { premierPlan_ = inPremierPlan; emit miseAJour(); emit miseAJourPremierPlan( premierPlan_ ); } }
void OpenGLCamera::setZoom( double inZoom ) { if ( zoom_ != inZoom ) { zoom_ = inZoom; emit miseAJour(); emit miseAJourZoom( zoom_ ); } }
void OpenGLCamera::setPositionZ( double inZ ) { if ( positionZ_ != inZ ) { positionZ_ = inZ; emit miseAJour(); emit miseAJourPositionZ( positionZ_ ); } }
void OpenGLCamera::setPositionY( double inY ) { if ( positionY_ != inY ) { positionY_ = inY; emit miseAJour(); emit miseAJourPositionY( positionY_ ); } }
void OpenGLCamera::setPositionX( double inX ) { if ( positionX_ != inX ) { positionX_ = inX; emit miseAJour(); emit miseAJourPositionX( positionX_ ); } }
/* Algorithme de Prim */ Prim* prim(Tas *tas, Reseau *res, Noeud *deb) { int *pred=NULL; double *d=NULL; int *M=NULL; Elem *e; CellNoeud *voisin; int i; Prim *prim; prim = malloc(sizeof(Prim)); pred = malloc(res->nbNoeuds*sizeof(int)); d = malloc(res->nbNoeuds*sizeof(double)); M = malloc(res->nbNoeuds*sizeof(int)); prim->nbNoeuds = res->nbNoeuds; for(i = 0; i < res->nbNoeuds; i++) { pred[i] = -1; d[i] = FLT_MAX; M[i] = 0; } //mettre le noeud de départ à la racine du tas tas->val[deb->num]->poids = 0.0; miseAJour(tas, tas->val[deb->num]); d[deb->num] = 0.0; M[deb->num] = 1; while(!est_vide(tas)) { //rechercher le plus petit noeud non parcouru e = recup_min(tas); // parcourir tous les voisins du noeud voisin = e->noeud->voisins; while(voisin != NULL) { if(M[voisin->cour->num] == 0) { d[voisin->cour->num] = voisin->poids; pred[voisin->cour->num] = e->noeud->num; tas->val[voisin->cour->num]->poids = voisin->poids; miseAJour(tas, tas->val[voisin->cour->num]); M[voisin->cour->num] = 1; } else { if((M[voisin->cour->num] != 2) && (d[voisin->cour->num] > voisin->poids )) { d[voisin->cour->num] = voisin->poids; pred[voisin->cour->num] = e->noeud->num; tas->val[voisin->cour->num]->poids = voisin->poids; miseAJour(tas, tas->val[voisin->cour->num]); } } //traiter le voisin suivant voisin = voisin->suiv; } M[e->noeud->num] = 2; } prim->pred = pred; prim->d = d; return prim; }