Ho un rettangolo di origine e un rettangolo di destinazione. Devo trovare la scala massima a cui la sorgente può essere ridimensionata mentre si adatta all'interno del rettangolo di destinazione e mantenendo le proporzioni originali.Come si ridimensiona un rettangolo alla dimensione massima possibile all'interno di un altro rettangolo?
Google ha trovato one modo di farlo ma non sono sicuro che funzioni in tutti i casi. Ecco la mia soluzione prodotta in casa:
- Calcola altezza/larghezza per ciascun rettangolo. Questo dà le pendenze delle diagonali
msrc
emdest
. - Se
msrc < mdst
, fonte scala larghezza per adattarsi alla destinazione larghezza (e altezza di scala dallo stesso rapporto) - Altrimenti, fonte scala altezza per adattarsi alla destinazione altezza (e la scala larghezza dal stesso rapporto)
Alla ricerca di altre possibili soluzioni a questo problema. Non sono nemmeno sicuro che il mio algoritmo funzioni in tutti i casi!
Dolce! Una volta che hai la scala, utilizzare questi per ottenere le dimensioni finali: 'width = src.width * scale' e' height = src.height * scale' –
Change min con max se si vuole coprire tutta l'area di destinazione. – Glogo
La stessa soluzione, ma con i nomi più chiari per me: 'scale = min (maxWidth/actualWidth, maxHeight/actualHeight)', 'newWidth = actualWidth * scale',' newHeight = actualHeight * scale'. –