Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1774 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  placement de disques dans une surface

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

placement de disques dans une surface

n°987401
grimgroth
Posté le 20-02-2005 à 01:00:59  profilanswer
 

Bonjour,
 
Le but de mon programme est de générer une image composée de disques de différentes tailles, placés de façon aléatoire et de façon à remplir le plus possible de surface avec ces disques.
La contrainte majeure est que les disques ne doivent pas se chevaucher.
Pour avoir un ordre d'idée, l'image est d'une taille comprise entre 640*400 et 1280*1024.
Et le nombre de disques se situe entre 2000 et 10000. (la rayon des disques varie entre 5 et 35 pixels).
 
Voila comment je m'y prends actuellement:
J'ai une structure qui permet d'enregistrer les disques deja présents.
 
J'ai implanté un algo naïf qui fait ceci:
1- je génére un disque ( c'est à dire un centre et un rayon).
2- je teste si ce disque ne chevauche pas les disques déja présents.
a- si le disque ne chevauche rien, je l'ajoute à ma liste et reviens en 1
b- si le disque chevauche un autre disque je reviens en 1.
Le problème est qu'après un certain nombre de disques déja présents, il devient difficile de générer un disque qui ne chevauche rien. (au bout de quelques centaines de disques générés la proportion de disques acceptés devient de plus en plus faible).
 
Le problème vient peut-etre de l'étape 1. Pour générer les coordonnées du centre je fais ça de façon complétement aléatoire, j'autorise toutes les coordonnées de ma surface.
 
J'avais pensé découper la surface totale de travail en plus petites zones pour pouvoir générer de façon plus "dynamique" les coordonées des disques, mais je ne sais pas trop d'une part si ça va être efficace, et d'autre part comment m'y prendre. (par dynamique, je veux dire en tenant compte des disques deja existants dés la phase de génération des coordonnées du centre).
 
Si vous avez des idées sur la façon de résoudre ce problème donnez les moi, et si vous pensez à une toute autre méthode pour parvenir au même résultat, je suis preneur aussi.
 
Merci d'avance pour votre aide.
 
PS: je fais ça en java.

mood
Publicité
Posté le 20-02-2005 à 01:00:59  profilanswer
 

n°987733
maximew
Coffee and cigarettes and Cate
Posté le 20-02-2005 à 17:09:54  profilanswer
 

Les algorithmes génétiques sont tes amis!
J'avais justement vu un problème dans le genre du tiens, à savoir, trouver le plus grand cercle possible dans un espace limité où sont entreposés des autres disques.
Fait une recherche Google Sur algorithme génétique, tu devrais trouver facilement!


---------------
Mon Flickr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  placement de disques dans une surface

 

Sujets relatifs
Une surface DirectDraw dans un controle MFC ?Parcourt d'une surface hexagonale constituée d'hexagones...
[SDL]SDL_Rect.w =SDL_Surface->w; => Non affichage !Placement de calque sous Dreamweaver MX...
[VB] Rotation d'une surface avec DX7 et DDraw[2D] comment savoir si un point est dans la surface d'un polygône ?
wxpython : placement[CSS] Problème de placement de div avec float
[OpenGL aussi]Extrusion de surface en OpenGLHistoire de placement de noeuds et de liens...
Plus de sujets relatifs à : placement de disques dans une surface


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR