Texture 2D en PGC++.

Slides:



Advertisements
Présentations similaires
Identification de différentes espèces de papillons par les mathématiques Comment les mathématiques peuvent-ils être un outil de détermination des espèces.
Advertisements

Chapitre annexe. Récursivité
C++ 6ème cours Patrick Reuter maître de conférences
Couleur – Vision – Image partie 1 : comment l’œil fonctionne-t-il ?
Chapitre 5. Description numérique d’une variable statistique.
Tests non paramétriques
C.
4 Les Lois discrètes.
Statistique et probabilités au collège
Ordonnancement des mouvements de deux robots
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Programmes du cycle terminal
B.Shishedjiev - Informatique II
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
OCaml - Les listes L3 MI.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
IFT3730: Infographie 3D Transformations Géométriques
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Modélisation géométrique à l’aide d’un maillage
Algorithme de Bellman-Ford
Structures de données IFT-2000
Structures de données IFT-2000
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Courbes de Bézier.
1 PROTOTYPE PGC++ Courbe_parametrique DÉFINITION.
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Package IFT1025 Jian-Yun Nie.
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
Standard Template Library
CSI1502 Principes fondamentaux en conception des logiciels
Calcul des groupes d'homologie d’objets discrets
Structures de données IFT-10541
Techniques de points de contrôle en OpenGL : formes de Bézier
Références à une cellule dans EXCEL
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
PROBABILITÉS.
Structures des données
1 Exemples Construction et implantation de types de données abstraits.
1 Modèles de particules Reeves, W. T., "Particle Systems - A technique for Modeling a Class of Fuzzy Objects," SIGGRAPH 83, Reeves, W. T., and.
(Vient du grec et signifie « Peut prendre plusieurs formes »)
1 Introduction à la théorie des tests. 2 Plan I- choix entre 2 paramètres de tendance centrale Choix entre 2 proportions pour un caractère qualitatif.
La notion de type revisitée en POO
Rappels de statistiques descriptives
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Micro-intro aux stats.
STATISTIQUES – PROBABILITÉS
Tutorat en bio-informatique
1 Quatrième journée Les flots de données Les entrées/sorties Les flots de données Les entrées/sorties.
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Les surcharges d'opérateurs
Chapitre 3: Variables aléatoires réelles continues
Fonction carré.
6ième Classe (Mercredi, 17 novembre) CSI2572
Quelques pistes d’algorithmes possibles au lycée
Chapitre 4 Variables aléatoires discrètes
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
STATISTIQUE DESCRIPTIVE
Processus ponctuels Caractéristiques et Modèles de répartitions spatiales.
Transcription de la présentation:

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; 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;

Loi_de_probabilite public: 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 que la loi discrète. Pré - La loi de probabilité a été créée. Post - Le ième paramètre de la loi a été créé. */

Loi_de_probabilite void 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 distinctes et 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 correspondante au paramètre 2. */

Loi_de_probabilite float Generer_une_valeur_pseudo_aleatoire(); /* Permet de générer une valeur pseudo-aléatoire selon la 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. */ };

Palette_de_couleurs Palette_de_couleurs(int Nombre_de_couleurs); Permet de créer une palette de "Nombre_de_couleurs" couleurs et d'initialiser chaque couleur à noire (0, 0, 0). Palette_de_couleurs(Couleur_RVB C1, Couleur_RVB C2, int Nombre_de_couleurs); RVB 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.

Palette_de_couleurs int 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 la palette 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 juxtaposant P1 avec P2. La longueur de la nouvelle palette est la somme des longueurs de P1 et P2. friend void Afficher(Palette_de_couleurs & P); Permet d'afficher la palette de couleurs P sans tenir compte du caractère opaque.

Texture_2D enum 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;

Texture_2D public: 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); Chaque couleur du tableau de texture issue de la palette P est générée aléatoirement d'après la loi discrète L. */

Texture_2D Texture_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 est générée aléatoirement d'après la matrice de probabilités conjointes Q. L'ordre avec lequel les couleurs sont générées sur 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.

Texture_2D friend void Afficher(Texture_2D & T); /* Permet d'afficher à l'écran une texture à partir de la position courante. };

Maillage_triangulaire Maillage_triangulaire & Fractale (float Facteur_de_rugosite, int Niveau_de_recurrence, float Variance); Transforme le maillage courant en un maillage plus fin en se basant sur 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 les sommets sont P1, P2 et P3 et les normales N1, N2 et N3 : P = (P1 + P2 + P3) / 3 puis, 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 * i et de variance Variance * 2 .

Maillage_triangulaire Le triangle P1, P2 et P3 du maillage est remplacé par les trois triangles suivants : 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.