-
Placement de fenetres
Bonjour,
J'ai une application qui crée une multitude de petite fenêtre vidéo à l'interieur d'elle meme et je voudrais mais je n'ai hélas pas trouvé un algorithme qui me place les fenetre au mieu, je m'explique :
- pour 1 fenetre il me renvoir : une colonne, une ligne (logique !!)
- pour 2 fenetre 2 colonne , une ligne car l'ecran etant en 4/3 c'est plus logique cette séparation.
et ainsi de suite, les fentres etant en 4/3 et l'ecran variable 4/3 ou 16/10eme
je voudrais optimiser au mieu mon écran
Si quelqu'un peut m'aider ce serait super sympa
-
Bonjour,
ton problème est ce que l'on appelle un problème du "sac à dos" :)
Fais donc une petite recherche sur le sujet dans le forum, nous en avons souvent débattu.
Saches juste qu'il n'y a pas de solution miracle pour ce problème car il est NP-complet.
Une des méthodes triviales est de trier les objets de manière décroissante en fonction de leurs tailles et de les placer dans cet ordre là où tu peux.
-
Merci, je vais faire une recherche dans le forum, juste pour te préciser une petite chose, toute mais fenêtre auront la même taille, je veux juste calculer le nombre par ligne et par colonne optimal.
-
Bonjour,
ah... ça change certaines choses, notamment que le problème se simplifie énormément :)
Si elles ont toutes une taille préfixée, tu n'as qu'à calculer combien tu peux en mettre par ligne et par colonne.
Si cela ne suffit pas, tu calcules le taux de chevauchement nécessaire de manière à tout faire rentrer, soit en compressant les lignes, soit les colonnes.
-
justement je ne souhaite pas ca, enfin dans la mesure du possible, je souhaiterais que le nombre de ligne et de colonne s'adapte afin que la fenetre (toujours format 4/3) mais a calculer soit la plus grande possible
-
Alors voilà comment je vois les choses :
- N le nombre de fenêtres que tu souhaites disposer
- Nw le nombre de fenêtres que tu peux mettre dans la largeur
- Nh le nombre de fenêtres que l'on peut mettre dans la hauteur
- Ew la largeur de l'écran
- Eh la hauteur de l'écran
- Fw largeur de tes fenêtres
- Fh hauteur de tes fenêtres
On obtient les égalités et inégalités suivantes :
Dans une fenêtre 4/3, on a Fw = 4/3 Fh.
Nw = Ew / Fw. (la largeur de l'écran divisée par la largeur d'une fenêtre).
Nh = Eh / Fh = 4Eh / 3Fw.
Et on a pour contrainte : Nw x Nh > N => Nw x Nh - N > 0.
Soit tu fais une recherche exhaustive en faisant varier Fw et tu trouves la valeur qui satisfait tout ça. Dès que tu auras la largeur tu auras tous les autres paramètres.
Soit on peut faire l'étude de la fonction f(Fw) = Ew / Fw x 4Eh / 3Fw - N. Si je ne dis pas trop de bêtises, un des extrémas maximise la largeur de la fenêtre.
-
Merci à toi, je vais essayer tout ca !