コード例 #1
0
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() ) );
}
コード例 #2
0
ファイル: openGLCamera.cpp プロジェクト: LePelicaN/GUIOpenGL
void OpenGLCamera::setPremierPlan( double inPremierPlan )
{
   if ( premierPlan_ != inPremierPlan )
   {
      premierPlan_ = inPremierPlan;
      emit miseAJour();
      emit miseAJourPremierPlan( premierPlan_ );
   }
}
コード例 #3
0
ファイル: openGLCamera.cpp プロジェクト: LePelicaN/GUIOpenGL
void OpenGLCamera::setZoom( double inZoom )
{
   if ( zoom_ != inZoom )
   {
      zoom_ = inZoom;
      emit miseAJour();
      emit miseAJourZoom( zoom_ );
   }
}
コード例 #4
0
ファイル: openGLCamera.cpp プロジェクト: LePelicaN/GUIOpenGL
void OpenGLCamera::setPositionZ( double inZ )
{
   if ( positionZ_ != inZ )
   {
      positionZ_ = inZ;
      emit miseAJour();
      emit miseAJourPositionZ( positionZ_ );
   }
}
コード例 #5
0
ファイル: openGLCamera.cpp プロジェクト: LePelicaN/GUIOpenGL
void OpenGLCamera::setPositionY( double inY )
{
   if ( positionY_ != inY )
   {
      positionY_ = inY;
      emit miseAJour();
      emit miseAJourPositionY( positionY_ );
   }
}
コード例 #6
0
ファイル: openGLCamera.cpp プロジェクト: LePelicaN/GUIOpenGL
void OpenGLCamera::setPositionX( double inX )
{
   if ( positionX_ != inX )
   {
      positionX_ = inX;
      emit miseAJour();
      emit miseAJourPositionX( positionX_ );
   }
}
コード例 #7
0
ファイル: prim.c プロジェクト: maximouth/algo
/* 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;
}