Algo de remplissage d'une forme dont les points sont connus

Algo de remplissage d'une forme dont les points sont connus - Programmation

Marsh Posté le 20-03-2002 à 23:51:02    

On a des points dans un tableau, ils donnent une forme
Genre ca : http://www.v-stuff.net/perso/POCOOL.PNG
 
Maintenant comment on fait pour remplir l'interieur de la figure sans prob...
et me sortez pas on remplit entre 2 points sur une meme ligne vu qu'il y a, ne serait-ce que dans mon exemple, des cas ou ca ne marche pas...

Reply

Marsh Posté le 20-03-2002 à 23:51:02   

Reply

Marsh Posté le 20-03-2002 à 23:57:44    

ben le premier soucis est de trouver un point à l'intérieur de ton polygone. Après cela, tu n'as plus qu'à écrire un algo récursif qui, à partir d'un point donné, le colorie et appelle la meme fonction pour ses voisins si ceux-ci ne sont pas encore coloriés.

Reply

Marsh Posté le 21-03-2002 à 00:24:53    

Pitounet a écrit a écrit :

ben le premier soucis est de trouver un point à l'intérieur de ton polygone. Après cela, tu n'as plus qu'à écrire un algo récursif qui, à partir d'un point donné, le colorie et appelle la meme fonction pour ses voisins si ceux-ci ne sont pas encore coloriés.  




 
Par contre fait gaffe à la récursivité... certains languages ne supportent pas plus d'un certain nombre d'appel récursif... or pour le remplissable d'une figure tu risques d'en avoir un paquet.
Essaie plutôt de faire ça sans récursivité, genre au lieu d'appeler la fonction de remplissable tout de suite pour chaque voisin, mets ces voisins dans des files d'attentes dans lesquels chaque point sera traité quand celui d'avant aura finit d'être remplit.
 
À par ça, il y a peut-être d'autre algorithmes pour ça :)

Reply

Marsh Posté le 21-03-2002 à 00:27:09    

j parlais de récursivité parce que c'est la version la plus simple de l'algo mais c'est vrai qu'il peut etre plus efficace d'utiliser une file ou un pile.

Reply

Marsh Posté le 21-03-2002 à 00:30:03    

Pitounet a écrit a écrit :

j parlais de récursivité parce que c'est la version la plus simple de l'algo mais c'est vrai qu'il peut etre plus efficace d'utiliser une file ou un pile.  




 
mais bon c'était destiné à VDV pour lui éviter une surprise désagréable lors de ses tests :D

 

[jfdsdjhfuetppo]--Message édité par Tentacle--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 21-03-2002 à 00:31:55    

pas de pb, tu as eu raison de préciser le pb de la récursivité...

Reply

Marsh Posté le 21-03-2002 à 01:12:12    

par rapport à ta courbe fermée, il faut ausi trouver un moyen de modéliser laquelle des deux surfaces séparées par la curbe tu veux remplir

Reply

Marsh Posté le 21-03-2002 à 01:23:53    

Pitounet a écrit a écrit :

ben le premier soucis est de trouver un point à l'intérieur de ton polygone.  




 
J'ai l'impression qu'il risque d'avoir du mal a generaliser
s'il ne donne pas de point de depart
je suis a peu pres certain qu'on peut trouver
des cas ou ca pete si on ne donne pas de point a l'interieur de la surface a colorer.
(exemple limite du damier..)
 
LEGREG

Reply

Marsh Posté le 21-03-2002 à 01:44:16    

bah en fait
d'apres les limitations (a savoir, un point ne peut avoir plus de 2 voisins)
on peut sortir la regle suivante :
- on prend le premier point le plus en haut a gauche, celui d'en dessous est forcement vide ET a l'interieur :)
j'ai pas trouve de cas qui contredisaient cette regle avec la limitation imposee
donc c bon
 
niveau recursivite ca va, y'a juste un prob c que ca a tendance a revenir sur son chemin deja fait, donc je fais faire des nouvelles methodes genre "generer un tableau contenant l'interieur" et ce genre de connerie, vu la suite de l'exo c le plus simple et le plus efficace ;)

Reply

Marsh Posté le 21-03-2002 à 09:25:59    

-VDV- a écrit a écrit :

bah en fait
d'apres les limitations (a savoir, un point ne peut avoir plus de 2 voisins)
on peut sortir la regle suivante :
- on prend le premier point le plus en haut a gauche, celui d'en dessous est forcement vide ET a l'interieur :)
j'ai pas trouve de cas qui contredisaient cette regle avec la limitation imposee
donc c bon
 
niveau recursivite ca va, y'a juste un prob c que ca a tendance a revenir sur son chemin deja fait, donc je fais faire des nouvelles methodes genre "generer un tableau contenant l'interieur" et ce genre de connerie, vu la suite de l'exo c le plus simple et le plus efficace ;)  




 
donc toi tu veux plûtôt suivre le contour c'est ça? mais si il y a des croisements, tu fais comment ?
 
Pour le problème qu'il revient sur son chemin, il te suffit normalement de tester à chaque fois si le voisin que tu t'apprêtes à traiter (ou à mettre dans la file d'attente) est déjà remplis ou pas.

Reply

Marsh Posté le 21-03-2002 à 09:25:59   

Reply

Marsh Posté le 21-03-2002 à 10:34:19    

-VDV- a écrit a écrit :

bah en fait
d'apres les limitations (a savoir, un point ne peut avoir plus de 2 voisins)
on peut sortir la regle suivante :
- on prend le premier point le plus en haut a gauche, celui d'en dessous est forcement vide ET a l'interieur :)
j'ai pas trouve de cas qui contredisaient cette regle avec la limitation imposee
donc c bon




 
Oui mais si tu oublies de preciser
les limitations dans l'enonce ;)
 
LEGREG

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed