algoritmo di piastrellatura per la dimensione massima di tessere uguali

1

Sto provando a montare sullo schermo un numero arbitrario di video HD in modo che abbiano tutti la stessa dimensione, massimizzando la dimensione dei video, senza la visualizzazione di barre di scorrimento.

Dato N numero di tessere di uguale proporzioni (16: 9), visualizzate in una finestra di altezza e larghezza arbitrarie, come posso ridimensionare le tessere in modo che:

a) tutte le tessere hanno le stesse dimensioni
b) tutte le tessere mantengono le proporzioni
c) tutte le tessere rientrano nel viewport (cioè, non scorre)
d) le tessere sono più grandi possibile, pur mantenendo c)

    
posta RedFilter 23.03.2016 - 02:18
fonte

1 risposta

1

Lo scopo di questa risposta è illustrare come ci si avvicina a un problema simile, indipendentemente dalla lingua, e anche per illustrare in un modo che può essere utilizzato anche per molti problemi diversi.

Unknown

  • Fattore di scala s
  • Numero di tessere orizzontalmente nh
  • Numero di tessere verticalmente nv

note

  • Viewport vw, vh
  • Dimensione del video originale (a schermo intero) w, h
  • Numero totale di video n

Vincoli

  • Vincolo 1: nh * w * s <= vw
  • Vincolo 2: nv * h * s <= vh
  • Vincolo 3: nh * nv >= n

Obiettivo di ottimizzazione

  • Massimizza s

Commento

  • Tutti i valori sono strettamente positivi (nessuno di essi può essere zero o negativo).

Suggerimenti

Se non si dispone di un risolutore di vincoli, è possibile innanzitutto enumerare l'elenco di candidati della coppia (nh, nv) , quindi risolvere s per ciascun candidato e infine scegliere quello che massimizza s .

    
risposta data 23.03.2016 - 05:51
fonte

Leggi altre domande sui tag