Polygones concaves plein

Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
- - Dernière réponse : Arnaud16022
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
- 1 nov. 2006 à 12:18
Hello!


J'aimerai dessiner des polygones concaves! Je sais que c'est impossible
directement avec GL_POLYGON, mais que c'est possible via le tampon
stencil... seulement j'aimerai dessiner des poygones dont le nombre de
sommets peut changer...

Bref je n arrive pas a trouver un algorithme pour pouvoir le faire

Surtout que la methode via le tampon est utile lorsque l'on connait les
sommets! ont fait alors tout "manuellement" mais faire un algorithme
qui calcul tout ca tout seul pour chaque polygon qu'on veut dessiner je
vois pas!


Quelqu un a une idée ou une voie a me donner pour pouvoir dessiner un polygone concave plein?


Merci!
Afficher la suite 

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
4
0
Merci
Mais pk as tu besoin de tracer des concaves, tu peux pas te démerder pour avoir plusieurs convexes à la place ?

Pour dessiner un polygone concave, toute facon, faut le découper en polygone convexe.


Je comprend pas ton truc du stencil la, "lorsque l'on connait les sommets", bas tu les connais forcément avant de tracer ...

Et "manuellement" je comprend pas trop ce que ca veut dire. Tu fais toi meme le découpage en polygone convexe?


PS: ca fait quoi quand tu veux dessiner un polygone concave ? j'ai jamais essayé.
Commenter la réponse de luhtor
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
0
Merci
en fait, si je rentre moi les coordonnée du polygone, je sais ou se
trouve les sommets et je sais ce qui est DANS le polygone et ce qui est
HORS du polygone!

Le problemes c'est que je lis dans un fichier les coordonnées de
polygones a N nombre de sommets variables et bien sur OpenGL ne peut
pas savoir dans ce polygone ce qui est dedans ou dehors du polygone si
je trace par triangle!

Imagine un polygone simple du genre de celui ci dessous:


4_________________5

 
|                                
|

 
|                                
|

 
|                                
|

3|_______2                 |

           
   
|                  
|

           
    |
                 
|

              1|_________ |6


avec les 6 sommets! j'ai un vertexpointer avec les coordonnées des points 1,2,3,4,5 et 6

maintenant je sais en connaissant moi ce polygone que je peux le dessiner en trancant les triangle 126, 265, 254, et 324

mais comment créer un algorithme qui sache faire ca tout seul et
comprendre commet dessiner les bon triangles se trouvant a l interrieur
du polygone! on peut s amuser a faire dessiner des triangles pour
chaque point, mais le trianle 123 par exemple ne doit pas etre dessiner
car il est en dehors du polygone!

J'espere que mon explication est plus simple cette fois!
Commenter la réponse de jojomillenium
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
0
Merci
pour repondre a ton PS au fait, dessiner un polygon avec GL_POLYGON en
donnant dans l ordre les point 1,2,3,4,5 et 6 par exemple pour celui du
dessus, bah ca rend ton polygone convexe, en par exemple ajoutant un
ligne de 6 à 3 en remplissant l'interieur, ou meme simplement de 1 a 3!
Je te raconte pas ce que ca donne quand je dessine mes polygones qui
font 16 sommets!
Commenter la réponse de jojomillenium
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
0
Merci
Problème bien connu ...
jojomillenium , certes, mais ce n'est pas facilement généralisable.

Fais le tour de l'API GLU, tu as une fonction toute faite pour ça. Doit y avoir pléthore de tutos pour l'utiliser, après. Si ça te va pas et que tu veux tout recoder ben lol éclate toi :D ( je pense pas que ce soit tellement dur, mais bon ... )

++
ad

_______________________

Omnia vincit labor improbus
Commenter la réponse de Arnaud16022