#include <OMinit.h>
Public Member Functions | |
OMinit (AABoundingBox *_bbtab, unsigned int _nbw, unsigned int _nbh) | |
Constructeur de la classe. | |
unsigned int | getPos (unsigned int x, unsigned int y) |
Renvoie la position dans le tableau pour les coordonnees donnees. | |
unsigned int | getw () |
Accesseur au nombre de patchs de large. | |
unsigned int | geth () |
Accesseur au nombre de patchs de long. | |
GLfloat | getmin () |
Accesseur a la hauteur minimale des boites englobantes. | |
GLfloat | getmax () |
Accesseur a la hauteur maximales de visibilite. | |
GLfloat | getbbsize () |
Accesseur a la taille d'un cote des boites englobantes. | |
GLfloat | getbbsizeinv () |
Accesseur a l'inverse de la taille d'un cote des boites englobantes. | |
unsigned char | normalise (GLfloat z) |
Normalise la valeur donnee pour qu'elle soit comprise entre 0 et 255. | |
AABoundingBox * | getbbox () |
Accesseur au pointeur des boites englobantes. | |
Private Attributes | |
unsigned int | nbw |
nombre de patch en largeur d'une carte d'occlusion | |
unsigned int | nbh |
nombre de patch en hauteur (longueur) d'une carte d'occlusion | |
GLfloat | min |
Hauteur minimale du terrain par rapport a tout les patchs. | |
GLfloat | max |
GLfloat | norm |
Variable servant a normaliser les hauteurs entre 0 et 255. | |
GLfloat | bbsize |
Taille d'un cote d'une boite englobante (identique pour toutes). | |
GLfloat | bbsizeinv |
Inverse de la taille pour changer les divisions en multiplications. | |
AABoundingBox * | bbtab |
Pointeur sur le tableau des boites englobantes. |
Cette classe contient les parametres necessaire au calculs de toutes les cartes d'occlusion, elle contient notement :
|
Constructeur de la classe.
|
|
Accesseur au pointeur des boites englobantes.
|
|
Accesseur a la taille d'un cote des boites englobantes.
|
|
Accesseur a l'inverse de la taille d'un cote des boites englobantes.
|
|
Accesseur au nombre de patchs de long.
|
|
Accesseur a la hauteur maximales de visibilite.
|
|
Accesseur a la hauteur minimale des boites englobantes.
|
|
Renvoie la position dans le tableau pour les coordonnees donnees.
|
|
Accesseur au nombre de patchs de large.
|
|
Normalise la valeur donnee pour qu'elle soit comprise entre 0 et 255.
|
|
Taille d'un cote d'une boite englobante (identique pour toutes).
|
|
Inverse de la taille pour changer les divisions en multiplications. On a souvent besoin de diviser par la taille d'une boite englobante afin de calculer la position du patch par rapport au coordonnees du terrain. une division etant tres couteuse, nous la calculons une seule fois et utilisons des multiplications afin d'optimiser les calculs. |
|
Pointeur sur le tableau des boites englobantes. Necessaire au calcul par lance de rayon des cartes d'occlusion. |
|
Hauteur maximale de tous les patchs, multiplie par 3. On multiplie la valeur de max par 3 afin de definir la hauteur critique a partir de laquelle tous les patchs seront visible. |
|
Hauteur minimale du terrain par rapport a tout les patchs.
|
|
nombre de patch en hauteur (longueur) d'une carte d'occlusion
|
|
nombre de patch en largeur d'une carte d'occlusion Attention, l'espace memoire necessaire au stockage de toutes less cartes d'occlusion est exponentiel par rapport aux dimensions, c'est a dire, au nombre de patchs que contient le terrain. L'espace memoire necessaire se calcul par la formule suivante : taille memoire en octet = (nbw * nbh)^2 par exemple: 36 x 36 patchs : memoire = 1 679 616 octet =~ 1.6 Mo 50 x 50 patchs : memoire = 6 250 000 octet =~ 6 Mo 100 x 100 patchs : memoire = 100 000 000 octet =~ 95 Mo 150 x 150 patchs : memoire = 506 250 000 octet =~ 482 Mo |
|
Variable servant a normaliser les hauteurs entre 0 et 255. Cette variable est calcules une seule fois ici car elle est tres souvent utilise elle est calcules de la facon suivante : 255 / (max - min) ainsi, il suffit de la multiplier avec une hauteur quelconque pour la normaliser entre 0 et 255. |