IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

petit probleme avec le Raytracer de Matthieu Brucher


Sujet :

C++

  1. #1
    Membre confirm�
    Inscrit en
    D�cembre 2007
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2007
    Messages : 109
    Par d�faut petit probleme avec le Raytracer de Matthieu Brucher
    Voila je suis entrain de parcourir le petit tutoriel .un raytracer interactif". Et je suis bloqu� � un certain niveau. Concretement, ce que je ne comprend pas du tout c'est ce bout de code �i.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	void RayTracer::draw(float *screen) const
    	{
    		Ray ray(origine, direction);
     
    		for(unsigned long j=0; j< hauteurPixel; ++j)
    		{
    			for(unsigned long i=0; i< largeurPixel; ++i)
    			{
    				generateRay(i,j,ray);
    				Couleur couleur(0.);
     
    				computeCouleur(ray, couleur);
     
    				for(unsigned int k=0; k < nbCouleurs; ++k)
    				{
    					screen[nbCouleurs * (j* largeurPixel +i) + k] = couleur(k);
    				}
    			}
    		}
    	}
    Et plus pr�cis�ment la 3�me boucle for. screen est d�clar� comme un float au d�part, mais la je ne sais pas du tout ce qu'il lui fait le pauvre

    Merci d'avance pour vos �claircissement.

  2. #2
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Non, screen est un float*. Ca veut dire que �a peut �tre un tableau de floats, comme c'est le cas ici.

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Bonjour,
    Je n'ai pas lu le tuto, mais � la lecture du code, je pense que :
    screen est un tableau de hauteurPixel lignes, chaque ligne ayant largeurPixel colonnes et chaque colonne ayant nbCouleurs canaux de couleurs.
    Cela doit ressembler � quelque chose comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    float screen[hauteurPixel*largeurPixel*nbCouleurs];
    Les trois boucles for it�rent :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    for(unsigned long j=0; j< hauteurPixel; ++j)
    { // pour chaque ligne
       for(unsigned long i=0; i< largeurPixel; ++i)
       { // pour chaque colonne
          for(unsigned int k=0; k < nbCouleurs; ++k)
          {// pour chaque canal de couleur
    Le premier canal [k=0] de la premi�re colonne [i=0] de la premi�re ligne [j=0] est screen[0]
    Le second canal [k=1] de la premi�re colonne [i=0] de la premi�re ligne [j=0] est screen[1]
    ...
    Le dernier canal [k=nbCouleurs-1] de la premi�re colonne [i=0] de la premi�re ligne [j=0] est screen[nbCouleurs-1]

    Le premier canal [k=0] de la seconde colonne [i=1] de la premi�re ligne [j=0] est screen[nbCouleurs + 0]
    Le second canal [k=1] de la seconde colonne [i=1] de la premi�re ligne [j=0] est screen[nbCouleurs + 1]
    ...
    Le dernier canal [k=nbCouleurs-1] de la seconde colonne [i=1] de la premi�re ligne [j=0] est screen[nbCouleurs + nbCouleurs-1]

    Pour synth�tiser, quand on a parcouru i colonnes en entier, on a parcouru i*nbCouleurs entr�es de screen.
    De la m�me fa�on, quand on a parcouru j lignes en entier, on a parcouru (en rempla�ant i par largeurPixel) : largeurPixel * nbCouleurs entr�es de screen.
    Donc � un moment (j,i,k) donn�e, on a parcouru :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    j * (largeurPixel* nbCouleurs ) + i * nbCouleurs  + k
    Ce qu'il factorise en :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    nbCouleurs * (j*largeurPixel + i)  + k

  4. #4
    Membre confirm�
    Inscrit en
    D�cembre 2007
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2007
    Messages : 109
    Par d�faut
    donc si je comprend bien:

    est un pointeur vers le premier �l�ment de mon tableau. donc premi�re colonne, et premier canal.

    Et pour la tableau, il est fait d'un dimension, donc une seul ligne, mais ou chaque colonne est divis�e en 3 autres colonnes. c'est bien �a??

Discussions similaires

  1. [C#] Petit problème avec un élément du FAQ
    Par matech dans le forum ASP.NET
    R�ponses: 11
    Dernier message: 24/01/2008, 14h11
  2. Petit problème avec grep
    Par dug dans le forum Shell et commandes GNU
    R�ponses: 13
    Dernier message: 11/05/2005, 15h34
  3. petit probleme avec Devil
    Par ellipse dans le forum DevIL
    R�ponses: 2
    Dernier message: 01/02/2005, 18h41
  4. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    R�ponses: 1
    Dernier message: 02/12/2004, 19h48
  5. petit probleme avec l'�diteur de builder
    Par qZheneton dans le forum C++Builder
    R�ponses: 2
    Dernier message: 28/10/2004, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo