13
1 Texture 2D en PGC++

Texture 2D en PGC++

  • Upload
    genna

  • View
    19

  • Download
    0

Embed Size (px)

DESCRIPTION

Texture 2D en PGC++. Loi_de_probabilite. enum Choix_d_une_loi_de_probabilite {Uniforme,Exponentielle,Normale, Weibull, Discrete}; class Loi_de_probabilite { /*Spécification fonctionnelle de la classe "Loi_de_probabilite"*/ private: enum Choix_d_une_loi_de_probabilite Loi; - PowerPoint PPT Presentation

Citation preview

Page 1: Texture 2D en PGC++

1

Texture 2D en PGC++

Page 2: Texture 2D en PGC++

2

Loi_de_probabiliteenum Choix_d_une_loi_de_probabilite

{Uniforme, Exponentielle, Normale, Weibull, Discrete};class Loi_de_probabilite{/* Spécification fonctionnelle de la classe

"Loi_de_probabilite" */private:

enum Choix_d_une_loi_de_probabilite Loi;float Premier_parametre, Deuxieme_parametre;float * Tableau_de_la_loi_normale;struct Loi_discrete{

int Nb_de_valeurs;float * valeurs;float * probabilites;

} Parametres_de_la_loi_discrete;

Page 3: Texture 2D en PGC++

3

Loi_de_probabilitepublic:

Loi_de_probabilite(Choix_d_une_loi_de_probabilite Loi);

/* Permet de créer une nouvelle loi de probabilité.Pré - Nil.Post - Le choix d'une loi de probabilité a été faite.*/

void Fixer_un_parametre_de_la_loi(float Parametre, int i);

/* Permet de fixer le ième paramètre de la loi autre quela loi discrète.Pré - La loi de probabilité a été créée.Post - Le ième paramètre de la loi a été créé. */

Page 4: Texture 2D en PGC++

4

Loi_de_probabilitevoid Fixer_les_parametres_de_la_loi_discrete

(int Nombre_de_valeurs, float Valeurs[], float Probabilites[]);

/* Permet de fixer les paramètres de la loi discrète.Pré - La loi de probabilité discrète a été créée.

La somme des probabilités du paramètre 3 est 1.Les valeurs possibles du paramètre 2 sont distincteset représentées en ordre croissant.Paramètre 1 : désigne le # de valeurs possibles

que peut prendre la variable aléatoire,Paramètre 2 : les valeurs possibles que peut

prendre la variable aléatoire,Paramètre 3 : la probabilité que la variable

aléatoire prenne la valeur correspondanteau paramètre 2. */

Page 5: Texture 2D en PGC++

5

Loi_de_probabilitefloat Generer_une_valeur_pseudo_aleatoire();

/* Permet de générer une valeur pseudo-aléatoire selonla loi de probabilité choisie.

Pré - La loi de probabilité est choisie.Post - Une valeur pseudo-aléatoire est générée selon

la loi de probabilité choisie. */};

Page 6: Texture 2D en PGC++

6

Palette_de_couleursPalette_de_couleurs(int Nombre_de_couleurs);

Permet de créer une palette de "Nombre_de_couleurs" couleurset d'initialiser chaque couleur à noire (0, 0, 0).

Palette_de_couleurs(Couleur_RVB C1, Couleur_RVB C2,

int Nombre_de_couleurs);Permet de créer une palette de "Nombre_de_couleurs" couleursRVB de la forme : C1 + i*(C2-C1) / (Nombre_de_couleurs - 1),i = 0, 1, 2, ..., Nombre_de_couleurs - 1.

Palette_de_couleurs(Palette_de_couleurs & P);Permet de créer une nouvelle palette et de l'initialiser à P.

Palette_de_couleurs & operator = (Palette_de_couleurs & P);Permet d'affecter P à la palette courante.

Page 7: Texture 2D en PGC++

7

Palette_de_couleursint Longueur_de_la_palette();

Détermine le nombre de couleurs de la palette.Couleur_RVB & operator[](int i);

Permet d'accéder ou de modifier la i ième couleur de la palette.Palette_de_couleurs Degrade(float t, Couleur_RVB C);

Retourne une palette avec le même nombre de couleurs que lapalette courante où la i ième couleur est obtenue comme suit :(1 – t) * i ième couleur de la palette courante + t * C.

friend Palette_de_couleurs Juxtaposition( Palette_de_couleurs & P1, Palette_de_couleurs & P2);Permet de construire une nouvelle palette obtenue en juxtaposantP1 avec P2. La longueur de la nouvelle palette est la somme deslongueurs de P1 et P2.

friend void Afficher(Palette_de_couleurs & P);Permet d'afficher la palette de couleurs P sans tenir compte ducaractère opaque.

Page 8: Texture 2D en PGC++

8

Texture_2Denum mode_de_parcours {balayage_horizontal = 0, aleatoire};class Texture_2D{/* Spécification fonctionnelle de la classe "Texture_2D"

Composantes :Un objet de "Couleur_RVB".

Structure: Il s'agit d'un tableau à deux dimensions de couleurs.*/

private:

int m;int n; /* Un tableau m x n de couleurs. */

Couleur_RVB * Tableau_de_couleurs;

Page 9: Texture 2D en PGC++

9

Texture_2Dpublic:

Texture_2D(int u, int v);

/* Permet de créer un tableau u x v de couleurs RVB.Le tableau est complètement noir.

Pré - u > 0, v > 0.Post - Une texture de couleur noire est créée. */

Texture_2D( int u, int v, Palette_de_couleurs P,Loi_de_probabilite L);

/* Permet de créer un tableau u x v de couleurs RVB.Chaque couleur du tableau de texture issue de la palette Pest générée aléatoirement d'après la loi discrète L. */

Page 10: Texture 2D en PGC++

10

Texture_2DTexture_2D( int u, int v,

Palette_de_couleurs P,Probabilites_conjointes Q,enum mode_de_parcours M);

/* Permet de créer un tableau de couleurs RVB de dimension u x v.Chaque couleur du tableau de texture issue de la palette P estgénérée aléatoirement d'après la matrice de probabilitésconjointes Q. L'ordre avec lequel les couleurs sont généréessur la texture 2D est défini à l'aide de M. */

Couleur_RVB & operator()(int i, int j);

/* Permet d'accéder ou de remplacer la couleur en position (i, j)du tableau de texture.

Page 11: Texture 2D en PGC++

11

Texture_2Dfriend void Afficher(Texture_2D & T);

/* Permet d'afficher à l'écran une texture à partir de la positioncourante.

};

Page 12: Texture 2D en PGC++

12

Maillage_triangulaireMaillage_triangulaire & Fractale (float Facteur_de_rugosite,

int Niveau_de_recurrence, float Variance);

Transforme le maillage courant en un maillage plus fin en se basantsur la théorie fractale.À chaque niveau de récurrence i allant de 1 à Niveau_de_recurrence,il s'agit de considérer le point-milieu P de chaque triangle dont lessommets sont P1, P2 et P3 et les normales N1, N2 et N3 :

P = (P1 + P2 + P3) / 3puis, de calculer la normale N au plan du triangle :

N = (P2 - P1) x (P3 - P2)et de calculer le point Q = P + r N,où r suit une loi normale de moyenne 0

- Facteur_de_rugosite * iet de variance Variance * 2 .

Page 13: Texture 2D en PGC++

13

Maillage_triangulaireLe triangle P1, P2 et P3 du maillage est remplacé par les trois trianglessuivants :

le triangle P1, P2 et Q,le triangle P2, P3 et Q, et, finalement,le triangle P3, P1 et Q.

Les normales aux sommets P1, P2 et P3 demeurent les mêmes i.e.N1, N2 et N3.

Par contre, la normale au sommet Q est (N1 + N2 + N3) / 3.