Dessiner un disque
Après le quad, le disque ! Plus difficile, avec un nombre arbitraire de triangles pour approximer le disque.
Sur papier, identifez une manière de découper un disque en triangles. Sachant que l'équation paramétrique du cercle est (où sont des points sur le cercle, le rayon du cercle et un angle variant de à ), identifiez la position de chacun des sommets des triangles en fonction du nombre de triangle , du rayon et de l'index du sommet sur le cercle (grosses maths en perspective !).
Modifiez le code pour dessiner un disque découpé en triangles (définissez comme une variable dans le code). Pour le tableau de vertex vous pouvez à présent utiliser un std::vector<Vertex2DColor>
qui vous permet de définir un tableau de taille variable. À nouveau il faut modifier l'appel à glBufferData
pour prendre en compte la taille du tableau et passer le pointeur vers les données brutes (en utilisant la méthode data()
du std::vector
). Il faut également modifier l'appel à glDrawArrays
pour dessiner tous les vertex (nombre de triangles multiplié par 3).
Vous aurez sans doute besoin d'utiliser la valeur de et les fonctions et . peut être obtenu en utilisant glm::pi<float>()
. et peuvent être calculés en utilisant les fonction glm::cos()
et glm::sin
.