Czysta matma.. Ustalasz sobie, nazwijmy to, wysokość bazową H, gdzie H<=wysokości obrazków. Następnie skalujesz obrazki do tej wysokości jak już masz to zrobione to powinieneś uzyskać coś takiego:
[ ][ ][ ][ ]------
[ ][ ][ ][ ]-
[ ][ ][][ ][ ]----
Następnie obliczasz odległość od prawej krawędzi do obrazka (to te kreski) i tą odległość (dla każdego rzędu osobno) dzielisz przez ilość obrazków w rzędzie (odległość/ilość=Delta). Jeżeli odległość ta okaże się większa od jakiejś tam granicznej wartości (Delta>Granica) to wtedy zamieniasz najmniejszy obrazek w danym rzędzie z pierwszym lepszym większym od niego obrazkiem z rzędu drugiego. Jeżeli warunek z graniczną wartością Granica jest spełniony to skalujesz poziomo każdy obrazek w rzędzie zwiększając jego rozmiar (poziomy) o Deltę. Oczywiście należałoby też dodać jakieś zabezpieczenia np. gdy zabraknie obrazków, a warunek Delta<=Granica dalej byłby niespełniony.. ale to inna bajka.
↧
Odpowiedź: Algorytm służący do skalowania prostokątów względem siebie
↧