. . Salut à tous.Algorithme pour positionner des objets rectangulaires et de taille aléatoire à l'intérieur d'un canevas non rectangulaire
. . J'ai une toile définie par de nombreux points (x, y) - ce n'est pas rectangulaire, mais au moins il suivra une forme presque hexagonale (comme un hexagone déformé, avec des angles qui sont toujours à 180 degrés). J'ai aussi une grande collection de différents rectangles (plus ou moins 140 d'entre eux, avec des largeurs et des hauteurs différentes) et j'ai besoin de les positionner à l'intérieur de la forme. Ils doivent être positionnés comme s'ils étaient poussés par la gravité (je veux dire ... le haut de la forme n'a pas besoin d'être rempli, mais le fond a besoin). . . Pour l'instant, ma seule idée est de stocker la position "x" min et max pour chaque position "y" (quelque chose comme: limits [300] = [30,30], limites [299] = [29, 32]; .), parcourez les rectangles, obtenez leur surface et comparez les valeurs pour trouver la meilleure position. Le plus important que j'ai en ce moment, c'est qu'ils doivent être organisés de façon «organique», pas comme une table (je ne peux pas avoir des rangées et des colonnes et les positionner à l'intérieur des cellules. être, comme fluide, côte à côte, l'un au-dessus de l'autre ...). Je ne suis pas sûr de savoir comment gérer le positionnement. . . Je connais quelques bons exemples d'objets "auto-équilibrés" (un bon exemple est l'expérience Chrome "Ball Pool": http://mrdoob.com/projects/chromeexperiments/ball_pool/), mais ils utilisent des objets rectangulaires et des objets circulaires, qui sont beaucoup plus faciles à comparer. . . Maintenant, ma meilleure idée est de vérifier les objets pour chaque combinaison x/y possible, de bas en haut, de gauche à droite, en vérifiant si une zone se chevaucherait, mais cela bloquerait probablement tout l'ordinateur pour les calculs pendant quelques minutes. plus d'itens sur l'écran, plus de calculs seraient nécessaires).
. . Le projet fonctionne sur Flash, mais tout exemple, conseil, algorithme, papier ou pseudo-code sera d'une grande aide.