Visualisation, affichage, progressif, ligne, surface, sphère
Le but de cet exercice est de visualiser l'affichage progressif d'une ligne se dessinant à la surface d'une sphère. La sphère tournera sur elle même autour d'un axe vertical. La ligne sera une ligne brisée dont tous les segments auront la même longueur. De plus, chacun de ses segments aura une couleur différente suivant un dégradé défini par l'espace colorimétrique HSV.
Cet exercice sera réalisé avec la bibliothèque Glut en langage C pour OpenGL.
[...] La fonction d'achage sera, elle, composée de : l'initialisation de création de lignes, soit glBegin(GL_LINES). une boucle allant de 0 jusqu'au nombre de lignes à acher (compteur), contenant elle même l'appel de glColor3f pour choisir la couleur du segment, ainsi que deux glVertex3f pour indiquer les deux points à relier. la de création de lignes, soit glBegin(GL_LINES) Couleurs Chaque segment de la ligne devra avoir une couleur diérente. Cette couleur variera selon un dégradé déni par l'espace colorimétrique HSV en fonction de l'avancement de l'achage de la ligne. [...]
[...] Ainsi, en réalité, seuls les sommets des segments appartiennent à la surface de la sphère. Donc, lorsque la longueur choisie des segments devient signicative devant le rayon de la sphère, il se dessine des pics à la surface de cette dernière, les segments passant légèrement par l'intérieur de la sphère. Pour éviter cela, il faudrait dessiner des arcs de cercle, mais ceci augmenterait grandement la quantité de calculs à réaliser. D'autre part, à chaque exécution, il se dessine deux pôles où la densité de points est plus importante. [...]
[...] Cependant, dans notre langage, les points sont dénis à l'aide de coordonnées polaires. Une conversion doit donc être eectuée pour obtenir les coordonnées Y et Z à l'aide des formules suivantes : X = R * sin (thêta) * cos (phi) Y = R * sin (thêta) * sin (phi) Z = R * sin (thêta) Notons que les fonctions trigonométriques du langage utilisé nécessitent que les angles soient donnés en radians. Une autre conversion est donc nécessaire depuis l'angle aléatoire obtenu en degrés : 2 angle(radians) = angle(degrés) * PI / Équidistance des points D'autre part, les segments de la ligne doivent tous être de même longueur L. [...]
[...] On réutilisera pour cela la fonction qui remplissait un tableau de couleurs RGB issue de l'exercice précédant Rotation de la sphère Comme dans l'exercice précédant, la sphère doit tourner autour d'un axe vertical. Pour cela, avant chaque achage de la sphère, on eectue une rotation d'angle alpha. La valeur d'alpha est initialisée à 0 et incrémentée d'une même valeur après chaque achage. La sphère peut ainsi tourner à une vitesse régulière Conclusion L'exercice a pu être réalisé, cependant, deux points resteraient à améliorer. D'une part, une approximation est faite pour que les segments dessinent la surface de la sphère. [...]
[...] Ceci est valable si l'on fait l'approximation que la surface de la sphère est plane à l'échelle du segment. Figure 1.1 Cercle à la surface de la sphère Sur la gure considérons le premier sommet d'un segment comme le centre du cercle et le second comme le point M. Soient les distances t et p correspondant à la distance séparant les deux points dans les plans respectifs des angles thêta et phi. En choisissant un angle a de valeur aléatoire, nous pouvons appliquer les formules suivantes : t = L * cos 3 p = L * sin Il faut ensuite convertir les distances t et p en angles. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture